Autor |
Beitrag |
Comp-Freak
      
Beiträge: 89
|
Verfasst: Sa 21.04.07 04:14
Wie poste ich ein mouse click auf einer handle oder einem fenster?
Ich will nicht das das fenster offen und ganz vorne ist sondern irgendwo.
Kann man auch anderes posten?
Danke :) Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Di 07.07.2009 um 00:23
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 21.04.07 10:13
hääää?!?
lg el
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Sa 21.04.07 10:58
@elundril: Wenn du die Frage nicht verstehst, musst du auch nicht posten.
@CompFreak: Sende die Mausklicks per PostMessage an das entsprechende Handle.
PostMessage Mouse Down
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Zuletzt bearbeitet von GTA-Place am Sa 07.02.09 21:06, insgesamt 1-mal bearbeitet
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 21.04.07 11:12
warum darfs ich nicht posten?? vielleicht will ich ja was lernen und das kann man nun mal schwer wenn man nicht einmal die frage versteht!!!
lg el
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Comp-Freak 
      
Beiträge: 89
|
Verfasst: Sa 21.04.07 11:37
@ Elundril
ich mochte ein mausclick virtuell erzeugen ohne das ich die (reale)maus bewege.
ich mochet aber nicht setcursorpos(x,y) benuezten weil es im hintergruind laufe sollte.
@ GTA-Place
danke. hab noch ein bischen gegoogelt unter postmeassage() und hab noch sehr viel anderes schoenes zeug gefunden
Fals ihr euch wundert gehts so:
Delphi-Quelltext 1: 2:
| PostMessage(HWND , WM_LBUTTONDOWN, 0, MakeLParam(Pos.X, Pos.Y)); Procedure (Handle, Welcher Button, 0, Position ; |
Nochmahl danke
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Sa 21.04.07 11:39
ahhh! jetzt versteh ich! danke!
lg el
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Rupert
      
Beiträge: 47
Erhaltene Danke: 1
Netware, Linux, WIN A-Z, DOS
Delphi 2005- Delphi 2009
|
Verfasst: Sa 07.02.09 20:19
Hi miteinander!
Also ich krieg´s nicht auf die Reihe.
Ich trasportiere die Maus mit
Delphi-Quelltext 1:
| setcursorpos(365,674); |
auf eine Stelle am Monitor, wo das Fenster Form1 geöffnet ist und will, dass nun ein Mausclick stattfindet.
Delphi-Quelltext 1: 2: 3:
| WindowHandle := FindWindow(nil, PChar('Form1')); if WindowHandle <> 0 then PostMessage(WindowHandle , WM_LBUTTONDOWN, 0, 0); |
Test mit einer anderen Funktion.
Ich habe schon getestet, ob die Funktion PostMessage ausgeführt wird
Delphi-Quelltext 1:
| PostMessage(WindowHandle , WM_SYSCOMMAND,SC_MINIMIZE,0)) |
Beim Test wurde das Fenster minimiert.
Merkwürdig ist dabei, dass dieser Vorgang nicht wiederholbar ist, wenn die Funktion einmal ausgeführt wurde. (Form1 wieder maximieren und den Vorgang wiederholen) - nix passiert mehr.
??????
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 07.02.09 20:20
Du vergisst die Maus wieder loszulassen (WM_LBUTTONUP). 
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 07.02.09 20:23
Es könnte evtl. funktionieren, wenn man die Maustaste auch virtuell wieder loslässt. Wobei ich nicht ganz verstehe, wieso hier die Kombination von SetCursorPos und PostMessage verwendet wird. Wenn man schon den Mauscursor verschiebt, kann man auch gleich mouse_event benutzen.
|
|
Rupert
      
Beiträge: 47
Erhaltene Danke: 1
Netware, Linux, WIN A-Z, DOS
Delphi 2005- Delphi 2009
|
Verfasst: Mo 09.02.09 14:41
Danke @DeddyH & jaenicke!
Das loslassen der Maus brachte nichts, aber die Frage, wozu überhaupt Postmessage zu verwenden war überzeugend. Ich verwende nun:
Delphi-Quelltext 1: 2: 3:
| SetCursorPos (-1000,300); mouse_event(MouseEventF_leftDown,0,0,0,0); mouse_event(MouseEventF_leftup,0,0,0,0); |
SetCursorPos muss ich davor stellen, weil das mouse_event keine negativen Koordinaten annimmt.
|
|
FragSalat
      
Beiträge: 24
|
Verfasst: Sa 04.07.09 22:08
kannst du ma pls die methode MakeLParm() posten pls
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 04.07.09 22:12
FragSalat hat folgendes geschrieben : | kannst du ma pls die methode MakeLParm() posten pls |
Wie meinst du das? Wenn du die richtig schreibst (MakeLPar am), dann ist die in Delphi enthalten (in der Unit Windows).
In deren Quelltext kannst du dort ja schauen, wenn es dich interessiert.
|
|
FragSalat
      
Beiträge: 24
|
Verfasst: Sa 04.07.09 23:27
aso hatte gehofft das es dazu ne methode gibt die ich mir in c# umschreiben kann
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 04.07.09 23:55
Hmm, ich kann es jetzt schlecht testen, aber wie wäre es so? C#-Quelltext 1: 2: 3: 4:
| private long MakeLParamMacro(ushort lo, ushort hi) { return lo | hi << 16; } |
|
|
FragSalat
      
Beiträge: 24
|
Verfasst: Mo 06.07.09 23:28
aber da muss ich doch keinen point angeben oder weil bei dem oben wird ja Pos.X/Y verlangt (Point Pos) also nen point
denn ich habs jetzt so
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| static uint WM_LBUTTONDOWN = 0x201; static uint WM_LBUTTONUP = 0x202; static uint MK_LBUTTON = 0x1; static uint WM_MOUSEMOVE = 0x200;
[DllImport("user32.dll", SetLastError = true)] static extern bool PostMessage( IntPtr hWnd, uint msg, uint wParam, int lParam );
public static void SendClick(IntPtr HWND, int x, int y) {
PostMessage(HWND, WM_MOUSEMOVE, 0, MakeLParam(x, y)); PostMessage(HWND, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(x, y)); PostMessage(HWND, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(x, y)); }
private static int MakeLParam(int LoWord, int HiWord) { return (int) ((HiWord << 16) | (LoWord & 0xffff)); }
hWnd = WinApi.FindWindow(listBox1.SelectedItem.ToString()); WinApi.SendClick(hWnd, 1219, 157); |
aber das funzt nit weiß wer wieso??
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 06.07.09 23:31
Dazu solltest du lieber eine entsprechende Frage im C#-Teil des Forums aufmachen. 
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Di 07.07.09 00:15
Comp-Freak hat folgendes geschrieben : | Wie poste ich ein mouse click auf einer handle oder einem fenster?
Ich will nicht das das fenster offen und ganz vorne ist sondern irgendwo.
Kann man auch anderes posten?
Danke  |
Suchst du sowas?
Siehe Anhang:
Einloggen, um Attachments anzusehen!
_________________ Popov
|
|
FragSalat
      
Beiträge: 24
|
Verfasst: Di 07.07.09 22:22
was macht dieses prog????
und es hilft 0%
|
|
Popov
      
Beiträge: 1655
Erhaltene Danke: 13
WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
|
Verfasst: Mi 08.07.09 00:38
FragSalat hat folgendes geschrieben : | was macht dieses prog????
und es hilft 0% |
Also du solltest dich schon entscheiden was du willst. Entweder willst du fragen was das Programm macht, oder du weißt es und bist der Meinung, daß es 0% hilft. Was jetzt? Leute die nicht wissen was sie wollen, nerven nur. Also, denk noch mal in Ruhe nach was du mir sagen willst.
_________________ Popov
|
|
|