Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Text mittels Keybd_Event markieren (VK_Shift) (https://www.delphipraxis.net/98114-text-mittels-keybd_event-markieren-vk_shift.html)

Cyberstorm 21. Aug 2007 17:04


Text mittels Keybd_Event markieren (VK_Shift)
 
Ich probiere mit folgendem Code z.B. 3 Zeichen zu markieren.
Nach links geht er dabei jedoch ohne zu markieren :-/

Code:
KeyBd_Event(VK_SHIFT, 0, 0, 0);
for i:=1 to 3 do
  begin
    KeyBd_Event(VK_LEFT, 0, 0, 0);
    KeyBd_Event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);
  end;
KeyBd_Event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);

Cyberstorm 21. Aug 2007 17:24

Re: Text mittels Keybd_Event markieren (VK_Shift)
 
habs schon.

es muss VK_RShift genommen werden (warum auch immer). Mit VK_LShift und VK_Shift funzt es nicht *strange*

Cyberstorm 21. Aug 2007 19:10

Re: Text mittels Keybd_Event markieren (VK_Shift)
 
bräuchte hier doch nochmal hilfe:

sobald ich RSHIFT simuliere und dazwischen noch die VK_Left's bringt das KEYUP nichts mehr und rshift "verklemmt" sich bis ichs auf der tastatur drücke.

völlig egal, ob ich danach noch 20 keyup events sende oder keydown/up.
wenn ich zwischen down und up jedoch andere tasten (z.b. "a") simuliere passiert das nicht.

ist das mit dem code bei euch auch so? (einfach mal in nen 5sek timer hauen und nem memo oder so testen, ob sich rshift verklemmt (an den anfang vom memo klicken z.b.)

Delphi-Quellcode:
  KeyBd_Event(VK_RSHIFT, 0, 0, 0);
   for i:=1 to 5 do
    begin
      KeyBd_Event(VK_LEFT, 0, 0, 0);
      KeyBd_Event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);
    end;
  KeyBd_Event(VK_RSHIFT, 0, KEYEVENTF_KEYUP, 0);
end;
danke schonmal

Luckie 21. Aug 2007 21:16

Re: Text mittels Keybd_Event markieren (VK_Shift)
 
Warum ermittelst du nicht das Handle von dem Edit und schickst eine MSDN-Library durchsuchenEM_SETSEL Nachricht an das Fenster?

Cyberstorm 21. Aug 2007 21:21

Re: Text mittels Keybd_Event markieren (VK_Shift)
 
Gibt es denn eine Möglichkeit das Handle des aktuellen Feldes zu ermitteln?

Grüße
Konrad

Cyberstorm 22. Aug 2007 14:01

Re: Text mittels Keybd_Event markieren (VK_Shift)
 
Falls es noch wer sucht:

Delphi-Quellcode:
function GetFocusedControl: HWnd;
var
  tid: Cardinal;
  hw: HWND;
begin
  hw := GetForegroundWindow;
  tid := GetWindowThreadProcessID(hw, nil);
  if AttachThreadInput(GetCurrentThreadID, tid, true)
    then Result := GetFocus
    else Result := HWND(-1);
  AttachThreadInput(GetCurrentThreadID, tid, false);
end;
Quelle: http://www.delphipraxis.net/internal...aktives+handle


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz