Registriert seit: 3. Sep 2004
4.629 Beiträge
Delphi 10.2 Tokyo Starter
|
Re: delphipraxis "Auto Login" mit Delphi
29. Jul 2005, 20:02
Das Problem ist, Ord('k') gibt es nicht! Um z.B. ein "k" auszugeben musst du Ord('K') verwenden. für ein großes "k" musst du die Shift Taste drücken lassen, dann das "k" mit Ord('K') ausgeben und dann Shift wieder loslassen.
Delphi-Quellcode:
procedure SendKeys(ClassOrCaption: PChar; Keys: string);
var
wh: HWND;
I, i2: Integer;
begin
wh := FindWindow(ClassOrCaption, nil);
if wh <= 0 then wh := FindWindow(nil, ClassOrCaption);
if wh > 0 then
begin
if not SetForeGroundWindow(wh) then
begin
showmessage('Sorry, konnte Prg. "'+ClassOrCaption+
'" nicht in Vordergrund bringen');
Exit;
end;
for I := 1 to length(keys) do
begin
if ansiuppercase(Keys[i]) <> keys[i] then //Buchstabe ist nicht GROß
begin
KeyBd_Event(Ord(Keys[I]), 0, 0, 0);
Keybd_Event(Ord(Keys[I]), 0, KEYEVENTF_KEYUP, 0);
end
else
begin
KeyBd_Event(vk_shift, 0, 0, 0);
KeyBd_Event(Ord(Keys[I]), 0, 0, 0);
Keybd_Event(Ord(Keys[I]), 0, KEYEVENTF_KEYUP, 0);
Keybd_Event(vk_shift, 0, KEYEVENTF_KEYUP, 0);
end;
end;
end elseEdit:
Showmessage('Sorry, konnte Prg. "'+ClassOrCaption+
'" nicht finden, ist''s gestartet ?');
end;
Geht es so?
Bei Zahlen oder Sonderzeichen sollte der Code aber scheitern, weil Uppercase('#') = # ist und nicht ' oder Uppercase('1') = 1 ist und nicht !.
Florian
|
|
Zitat
|