Wie ich die Strings oder Integerwerte übergeben habe, wurde in die Registry immer irgendwelche Zeichen eingetragen. Da ich den Hinweis nun mit SHAREMEM und der DLL beachtet hatte, war meine Überlegung, dass ich solche Einträge mit einer Function in einer DLL nicht machen könnte.
Hier mal ein Beispiel, wie ich es in die DLL als Funktion reingeschrieben habe :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| function registry_write_string(progname,valuename,value:string):boolean; var Registry : TRegistry; begin registry_write_string := true; Registry := TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; if Registry.KeyExists('\Software\Verzeichnis\' + progname) = false then try Registry.CreateKey('\Software\Verzeichnis\' + progname); except Registry.Free; registry_write_string := false; Exit; end; try if Registry.OpenKey('\Software\Verzeichnis\' + progname , true) = true then Registry.WriteString(valuename,value) else begin MessageDLG('Es konnte nicht in die Regsitry geschrieben werden',mtError,[mbOK],0); registry_write_string := false; end; finally Registry.CloseKey; Registry.Free; end; end; |
Und so habe ich die DLL in einer Unit eingebunden :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| unit dll_unit;
interface
function registry_write_string(progname,valuename,value:string):boolean; stdcall;
implementation
function registry_write_string(progname,valuename,value:string):boolean; stdcall; external 'name.dll'; end. |
Dann habe ich ganz normal den Namen aufgerufen und die Werte angegeben.