Einzelnen Beitrag anzeigen

gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Anwendungen steuern - Delphi unfähiger als andere Sprach

  Alt 24. Sep 2007, 16:15
Hi,
hast du es schon mal mit der procedure "PostKeyEx32" probiert?
Diese hat soweit ich weiß den Vorteil, das sie wirklich ein Tastendruck auslöst, während sendmessage diesen "simuliert".

Procedure:
Delphi-Quellcode:
procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
type TShiftKeyInfo = record shift: Byte; vkey: Byte; end; byteset = set of 0..7;
const shiftkeys: array [1..3] of TShiftKeyInfo = ((shift: Ord(ssCtrl); vkey: VK_CONTROL),(shift: Ord(ssShift); vkey: VK_SHIFT),(shift: Ord(ssAlt); vkey: VK_MENU));
var flag: DWORD; bShift: ByteSet absolute shift; i:Integer;
begin
 for i := 1 to 3 do
  begin
   if shiftkeys[i].shift in bShift then keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
  end;
 if specialkey then flag := KEYEVENTF_EXTENDEDKEY else flag := 0;
 keybd_event(key, MapvirtualKey(key, 0), flag, 0);
 flag := flag or KEYEVENTF_KEYUP;
 keybd_event(key, MapvirtualKey(key, 0), flag, 0);
 for i := 3 downto 1 do
  begin
   if shiftkeys[i].shift in bShift then keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0),KEYEVENTF_KEYUP, 0);
  end;
end;
Aufruf:
Delphi-Quellcode:
PostKeyEx32(VK_TAB, [ssshift], False);
application.ProcessMessages;
sleep(100);
Vielleicht hilft dir das ja, auch wenn es nicht um dein angesprochenes Thema geht.
greez
gabneo

[Edit]
Der Code funktioniert bei mir mit dem Fernsteuern vieler Anwendungen. Deswegen bin ich von Sendmessage() weggegangen.
[/Edit]

PS:Ich weiß nicht mehr woher ich den Code habe...sry
  Mit Zitat antworten Zitat