Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Welche unit wird benötigt?

  Alt 22. Dez 2007, 18:26
In einer Fremdanwendung ist das nur unwesentlich komplizierter:
Delphi-Quellcode:
var TB: Commctrl.TBBUTTONINFO; p: Commctrl.PTBBUTTONINFO;
begin
  p := VirtualAllocEx(ProcessHandle, nil, SizeOf(TB), MEM_COMMIT, PAGE_READWRITE);
  TB.cbSize := SizeOf(TB);
  TB.dwMask := CommCtrl.TBIF_COMMAND;
  WriteProcessMemory(ProcessHandle, p, @TB, SizeOf(TB.cbSize) + SizeOf(TB.dwMask), nil);
  SendMessage(..., TB_GETBUTTONINFO, BtnIndex, Cardinal(p));
  ReadProcessMemory(ProcessHandle, p, @TB, SizeOf(TB), nil);
  SendMessage(..., TB_PRESSBUTTON, TB.idCommand, MAKELONG (1, 0));
  VirtualFreeEx(ProcessHandle, p, 0, MEM_RELEASE);
end;
Das Prozess-Handle erfährst du mithilfe von GetWindowThreadProcessId.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat