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