ein Programm A soll ein anderes Programm B starten, soll aber vorher testen, ob das Programm B schon läuft.
Im Delphi-Treff findet man da einige gute Vorschläge für Delphi, die alle die unit TlHelp32.pas nutzen. Die unit habe ich mir von
http://hiasm.googlecode.com/svn/elements/delphi/code/TlHelp32.pas
heruntergeladen.
Beim kompilieren erfolgt an der Stelle:
Code: Alles auswählen
var
KernelHandle: THandle;
_CreateToolhelp32Snapshot: TCreateToolhelp32Snapshot;
_Heap32ListFirst: THeap32ListFirst;
_Heap32ListNext: THeap32ListNext;
_Heap32First: THeap32First;
_Heap32Next: THeap32Next;
_Toolhelp32ReadProcessMemory: TToolhelp32ReadProcessMemory;
_Process32First: TProcess32First;
_Process32Next: TProcess32Next;
function InitToolHelp: Boolean;
begin
if KernelHandle = 0 then
begin
KernelHandle := GetModuleHandle(kernel32);
if KernelHandle <> 0 then
begin
@_CreateToolhelp32Snapshot := GetProcAddress(KernelHandle, 'CreateToolhelp32Snapshot'); <-- hier und in den folgenden Zeilen entsteht der Fehler
@_Heap32ListFirst := GetProcAddress(KernelHandle, 'Heap32ListFirst');
@_Heap32ListNext := GetProcAddress(KernelHandle, 'Heap32ListNext');
@_Heap32First := GetProcAddress(KernelHandle, 'Heap32First');
@_Heap32Next := GetProcAddress(KernelHandle, 'Heap32Next');
@_Toolhelp32ReadProcessMemory := GetProcAddress(KernelHandle, 'Toolhelp32ReadProcessMemory');
@_Process32First := GetProcAddress(KernelHandle, 'Process32First');
@_Process32Next := GetProcAddress(KernelHandle, 'Process32Next');
der Fehler:
Code: Alles auswählen
TlHelp32.pas(323,7) Error: Can't assign values to an address
Besteht vielleicht zwischen Lazarus und Delphi ein Unterschied in der Schreibweise bei Pointern?
Hat jemand eine Idee?
Gruß, Linkat