Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Shift Cursor Down an anderes Programm senden (https://www.delphipraxis.net/204723-shift-cursor-down-anderes-programm-senden.html)

Dumpfbacke 22. Jun 2020 09:40

Shift Cursor Down an anderes Programm senden
 
Hallo Delphianer,
ich bin so langsam hier komplett am verzweifeln. Ich muss ein anderes Programm steuern. Hierzu muss ich Datensätzte dort markieren. HIerzu möchte ich mittels VK_Home auf den ersten Datensatz springen. Nun möchte ich nur Shift und zwei mal Cursor down um die erste Drei der 5 Datensätze ich hier zu markieren. Egal was ich versuche es geht einfach nicht. Ich kann kein Shift an der fenster schicken bzw es kommt nur Cursor Down dort an. Dieses hat aber den Nachteil das natürlich die Datensätze nicht merkiert sind.

Was ich schon alles versucht habe kan ich schon gar nich tmehr sagen.

Das Handel des Fenster suchen geht ja ganz einfach.

Dann habe ich mittes LB_SetSel die Datensätze markiert. Es funktioniert und die Datensätze sind dann auch markiert aber wenn die Date Daten dann mit den zweiten Button übernehme ist nur der erst Datensatz übernommen. Also dachte ich mir OK markiere dann einfach den ersten Datsatz und drücke dann shift und Cursor Down bis zum letzte. Also Postmessage oder Sendmessage(wndChild, WM_Keydown, VK_Shift,0) dann Postmessage / Sendmessage (wndChild, WM_keydown, VK_Down,0) und dann bei mit WM_SysKeyUp loslassen. Zuerst den Cursor und dann Shift.

Leider funktioniert es einfach nicht. Hat so etwas hier schon mal jemand gemacht ? Ich habe mir schnell mal ein eigenes Programm geschrieben mit nur einer Listbox drin. Dort geht es auch nicht. Ich wollte prüfen ob es ggf an den anderen Programm liegt.

Kann mir jemand hier helfen und hat etwas schon mal gemacht. Wie gesagt alle Key kommen an nur nicht wenn ich das ganze mittels Shift machen möchte.

Das ganze ist wie verhext. Ich wollte das ganze mal schnell an einem Nachmittag erledigen und nun bin ich schon seit Wochen dran unbd bekomme es einfach nicht hin.

API 22. Jun 2020 11:14

AW: Shift Cursor Down an anderes Programm senden
 
Hast du es mal mit PostKeyEx32 resp. PostKeyExHWND probiert?

Dumpfbacke 22. Jun 2020 11:44

AW: Shift Cursor Down an anderes Programm senden
 
Ja das habe ich auch schon mal versucht geht leider auch nicht bei PostKeyExHWND.
Das ganze ist wie verhext. Das haupt Problem ist das es mit LB_SETSEL nicht funktioniert. Ich kann es zwar markieren aber das Programm erkennt es dann nicht. D.h. es ist in der Listbox markiert aber man kann den Button zu übernehmen nicht drücken. Dieses wird erst dann frei wenn an etwss in der List box ausgewählt hat. Somit erkennt es das Programm leider nicht. Deshalb wollte ich es mit dem Cursor machen.

API 22. Jun 2020 13:09

AW: Shift Cursor Down an anderes Programm senden
 
Funktioniert es, wenn sich das Fenster im Vordergrund befindet / den Focus besitzt?

Dumpfbacke 22. Jun 2020 15:50

AW: Shift Cursor Down an anderes Programm senden
 
Geht auch nicht.

WladiD 22. Jun 2020 16:33

AW: Shift Cursor Down an anderes Programm senden
 
Ich kann es zwar nicht testen, aber das sollte mit SendInputHelper wie folgt funktionieren:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SIH: TSendInputHelper;
begin
  SIH := TSendInputHelper.Create;
  try
    SIH.AddVirtualKey(VK_HOME);
    SIH.AddShift(ssShift, True, False);
    SIH.AddVirtualKey(VK_DOWN);
    SIH.AddVirtualKey(VK_DOWN);
    SIH.AddShift(ssShift, False, True);
    SIH.Flush;
  finally
    SIH.Free;
  end;
end;

ZYLAGON 22. Jun 2020 17:28

AW: Shift Cursor Down an anderes Programm senden
 
Mit sndkey32.pas sollte das funktionieren.
Die Unit einbinden, sicherstellen, dass das richtige Fenster aktiviert ist und mittels dem Sendkey-Befehl den Tastendruck simulieren.
Sollte dann ungefähr so lauten:
Delphi-Quellcode:
SendKeys('+{DOWN}',true);

Das '+'-Zeichen steht für die Shift-Taste und {DOWN} für Cursor nach unten.

VG ZYL

Dumpfbacke 25. Jun 2020 09:06

AW: Shift Cursor Down an anderes Programm senden
 
Mein Problem ist das ich es direkt an das Fenster schikcen möchte da das Programm auf einen Terminalserver läuft. Dort funktioniert es so nicht oder man muss hier ständig "angemeldet" sein.
Es geht mit allem möglichem hier. Es muss eine Besonderheit bei der Shuft Tasete geben. Alles geht nur wenn ich Shift drücken möchte geht es einfach nicht.
Das ganze ist wie verhext hier.

KodeZwerg 25. Jun 2020 09:23

AW: Shift Cursor Down an anderes Programm senden
 
Hallo Dumpfbacke,

gibt es ein Demoprojekt mit dem man sich beschäftigen könnte um Dein Problem zu lösen?

//edit
also ich mein eine Demo vom Zielprogramm, nicht ein Delphi source der SendKeys o.ä. beinhaltet.

grizzly 25. Jun 2020 12:56

AW: Shift Cursor Down an anderes Programm senden
 
Ich bin mir jetzt nicht mehr sicher (schon ewig nix mehr damit gemacht), aber gab es da nicht auch noch die feine Unterscheidung zwischen den linken und rechten Shift Tasten? Also vk_LShift und vk_RShift? Während das vk_Shift wiederum was spezielles darstellt? Ich denke, da musste ich mal bei der Verwendung der AsyncKeyState Routinen aufpassen. Glaub ich...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Seite 1 von 2  1 2      

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