AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Control + Copy-Simulation funktioniert nicht!!

Control + Copy-Simulation funktioniert nicht!!

Ein Thema von gugelhupf · begonnen am 4. Mai 2006 · letzter Beitrag vom 8. Dez 2007
 
Benutzerbild von gugelhupf
gugelhupf

Registriert seit: 3. Feb 2006
Ort: Hessen
36 Beiträge
 
Delphi XE4 Enterprise
 
#1

Control + Copy-Simulation funktioniert nicht!!

  Alt 4. Mai 2006, 07:51
Moin zusammen,

ich habe ein kleines Problemchen.

Ich möchte gerne mit einem globalen HotKey den selektierten Text einer anderen Anwendung (auch Firefox, IE) in die Zwischenablage kopieren und direkt in ein Editfeld meiner Anwendung einfügen.
Alles nur durch Drücken des HotKeys.

Ich muss dazu sagen, dass ich schon sämtliche Foren durchforst habe 2 Wochen lang - auch hier - und bin auch fündig geworden, leider funktioniert immer noch nichts davon.

Hier mal ein paar Teile des Codes...


HotKey festlegen und registrieren:
Delphi-Quellcode:
procedure TFrmMain.FormCreate(Sender: TObject);
const
  MOD_ALT = 1;
  VK_R = $52;
begin
  FHotKey := GlobalAddAtom('Hotkey1');
  RegisterHotKey(Handle, FHotKey, MOD_ALT, VK_R);

  // ...
end;
HotKey-Event:
Delphi-Quellcode:
procedure TFrmMain.WMHotKey(var Msg: TWMHotKey);
begin
  // Hier muss geprüft werden, ob der HK bereits betätigt wurde
  if Msg.HotKey = FHotKey then
  begin
    FFirstStart := False;
    FHKUsed := True;

    // Zwischenablage öffnen
    Clipboard.Open;

    // Control + Copy simulieren
    keybd_event(VK_CONTROL, 0, 0, 0);
    keybd_event(Ord('C'), 0, 0, 0);
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
    Sleep(10);
    if Clipboard.HasFormat(CF_TEXT) then
      ShowMessage(Clipboard.AsText); // Zeigt nur einen leeren Text an

    // ...
  end;
end;
Wenn das Formular aktiviert ist:
Delphi-Quellcode:
procedure TFrmMain.ApplicationEventsActivate(Sender: TObject);
begin
  // Prüfen, ob es der erste Start des Programms ist
  if FHKUsed then
  begin
    if not FFirstStart then
    begin
      // Text aus der Zwischenablage überprüfen und als Nummer verwenden
      if Clipboard.HasFormat(CF_TEXT) then
      begin
        // Rufnummer füllen und "säubern"
        FRufnummer := CleanString(Clipboard.AsText);
        EditNumber.Text := FRufnummer; // Bleibt ebenfalls leer!!!
      end;
      // Zwischenablage leeren, falls etwas drinne steht ...
      if Clipboard.AsText <> 'then
        Clipboard.Clear;
      // ... und schließen
      Clipboard.Close;
    end;
  end;
end;
HotKey wieder löschen:
Delphi-Quellcode:
procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  UnregisterHotKey(Handle, FHotKey);
  GlobalDeleteAtom(FHotKey);
end;
Wer von Euch weiß Rat?

OS: WinXP
Delphi: Version 5, Enterprise
gugelhupf
Rede mir nicht dazwischen, wenn ich mit mir selbst rede. Weil if you go me on the Nerven I'll put you into a Gulli, do the Deckel druff and you never come back to the Tageslicht again.
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz