Entwickler-Ecke

Windows API - Funktionstastenbelegung zum Kopieren von Browserinhalt


Ercan - Do 01.10.09 20:01
Titel: Funktionstastenbelegung zum Kopieren von Browserinhalt
Hallo zusammen,

Mein Program läuft im SysTray und wartet bis in die Zwischenablage was kopiert wird.
Anschließend bearbeitet es den Inhalt und schreibt die Daten in einer Datei.

Momentan kopiere ich z.B. den IE-Browserinhalt mit Strg+A und Strg+C und das Programm erkennt das in Zwischenablage
was kopiert wurde verarbeitet es.
Ich möche aber anstatt Strg+A u. Strg+C eine Funktionstaste definieren. z.B. "F12" damit ich den Inhalt kopieren kann.

Das Programm soll also im Hintergrund immer auf den Tastendruck F12 reagieren und den aktuellen Browserinhalt in die Zwischenablage kopieren.

Für eine Hilfestellung währe ich sehr Dankbar.

LG

Ercan


fuba - Di 06.10.09 16:48


Delphi-Quelltext
1:
2:
3:
4:
function Pressed(aKey: Integer): Bool;
begin
  Result := (GetAsyncKeyState(aKey)  and $8000) = $8000;
end;


oder

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function KeyPressed: Integer;
var
   i : Integer;
   buf : TKeyboardState;
begin
   Result:=-1;
   if GetKeyboardState(buf) then
   begin
      for i:=0 to High(buf) do
      begin
         if (buf[i] and $80)<>0 then
         begin
            Result:=i;
            Exit;
         end;
      end;
   end;
end;


wenn du noch mehr suchst, Suche in: Delphi-Forum GETASYNCKEYSTATE oder Suche in: Delphi-Forum GETKEYBOARDSTATE
hoffe ich konnte heilfen.

lg. fuba


Boldar - Mi 07.10.09 17:17

Guck eher mal nach registerhotkey und schick dann ne entsorechende Message an firefox.


Ercan - Mi 07.10.09 19:02

Hallo,
Mit Registerhotkey kann ich jetzt die Funktionstaste abfangen.

Wie kann ich jetzt denn inhalt von IE / FireFox in die Zwischenablage kopieren.

Also Strg+A und Strg+C simulieren.

Damit funktionert es leider nicht. (Keine Fehlermeldung, keine Reaktion)

keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('C'), 0, 0, 0);
keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
sleep(10);
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(Ord('C'), 0, 0, 0);
keybd_event(Ord('C'), 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
sleep(10);


Viele Grüße

Ercan


Boldar - Mi 07.10.09 21:48

http://www.swissdelphicenter.ch/de/showcode.php?id=220