![]() |
Postmessage Problem
Hi Leute, ich habe folgenden Quelltext geschrieben, er ließ sich auch kompilieren, aber die Main Funktion (Button1Click funktioniert einfach nicht richtig), VK_END und VK_INSERT drückt er wohl aber die Zahlen nicht.
Delphi-Quellcode:
Ich verstehe einfach nicht warum -.-
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShellAPI, Menus, Appevnts, XPMan, ExtCtrls, ComCtrls,DateUtils; const WM_TASKABAREVENT = WM_USER+1; type TForm2 = class(TForm) PopupMenu1: TPopupMenu; disable1: TMenuItem; enable1: TMenuItem; close1: TMenuItem; CheckBox1: TCheckBox; Label1: TLabel; Label2: TLabel; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label3: TLabel; procedure Button1Click(Sender: TObject); procedure close1Click(Sender: TObject); procedure enable1Click(Sender: TObject); procedure disable1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private procedure TaskbarEvent(var Msg: TMessage); Message WM_TASKABAREVENT; public procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; end; var Form2: TForm2; wnd:hwnd; implementation {$R *.dfm} procedure delay(msec:longint); var start,stop:longint; begin start := gettickcount; repeat stop := gettickcount; application.processmessages; until (stop - start ) >= msec; end; procedure TForm2.WMSysCommand(var Message: TWMSysCommand); begin if Message.CmdType and $FFF0 = SC_MINIMIZE then begin Hide; end else inherited; end; procedure TForm2.TaskbarEvent(var Msg: TMessage); var Point : TPoint; begin case Msg.LParam of WM_LBUTTONDBLCLK: begin form2.show; end; WM_LBUTTONUP: begin form2.show; end; WM_RBUTTONUP: begin SetForegroundWindow(Handle); GetCursorPos(Point); PopupMenu1.Popup(Point.x, Point.y); end; end; end; procedure TForm2.FormCreate(Sender: TObject); var NotifyIconData: TNotifyIconData; begin wnd := FindWindow(nil,pchar(edit3.text)); Fillchar(NotifyIconData,Sizeof(NotifyIconData),0); NotifyIconData.cbSize := Sizeof(NotifyIconData); NotifyIconData.Wnd := Handle; NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; NotifyIconData.uCallbackMessage := WM_TASKABAREVENT; NotifyIconData.hIcon := Application.Icon.Handle; NotifyIconData.szTip := 'AFK Buffer'; Shell_NotifyIcon(NIM_ADD, @NotifyIconData); end; procedure TForm2.FormDestroy(Sender: TObject); var NotifyIconData: TNotifyIconData; begin FillChar(NotifyIconData,Sizeof(NotifyIconData),0); NotifyIconData.cbSize := Sizeof(NotifyIconData); NotifyIconData.Wnd := Self.Handle; NotifyIconData.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP; NotifyIconData.uCallbackMessage := WM_TASKABAREVENT; NotifyIconData.hIcon := Application.Icon.Handle; NotifyIconData.szTip := 'Punkt'; Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); end; procedure TForm2.disable1Click(Sender: TObject); begin checkbox1.checked:=true; end; procedure TForm2.enable1Click(Sender: TObject); begin checkbox1.checked:=false; button1.click; end; procedure TForm2.close1Click(Sender: TObject); begin form2.close; end; procedure TForm2.Button1Click(Sender: TObject); var i,delay0r:integer; begin delay0r:= strtoint(edit1.Text); wnd := FindWindow(nil,pchar(edit3.Text)); if wnd=0 then begin showmessage('Client not found!'); exit; end; application.ProcessMessages; PostMessage(wnd, WM_Keydown, VK_END, 0); PostMessage(wnd, WM_Keyup, VK_END, 0); sleep(50); application.ProcessMessages; PostMessage(wnd, WM_Keydown, $31, 0); PostMessage(wnd, WM_Keyup, $31, 0); sleep(delay0r); application.ProcessMessages; PostMessage(wnd, WM_Keydown, $32, 0); PostMessage(wnd, WM_Keyup, $32, 0); sleep(delay0r); application.ProcessMessages; PostMessage(wnd, WM_Keydown, $33, 0); PostMessage(wnd, WM_Keyup, $33, 0); sleep(delay0r); application.ProcessMessages; PostMessage(wnd, WM_Keydown, $34, 0); PostMessage(wnd, WM_Keyup, $34, 0); sleep(delay0r); application.ProcessMessages; PostMessage(wnd, WM_Keydown, $35, 0); PostMessage(wnd, WM_Keyup, $35, 0); sleep(50); application.ProcessMessages; PostMessage(wnd, WM_Keydown, VK_INSERT, 0); PostMessage(wnd, WM_Keyup, VK_INSERT, 0); //repeat //delay(strtoint(edit2.text)*1000); //buffen; //until checkbox1.checked=true; end; end. |
Re: Postmessage Problem
Zitat:
Was passiert und was soll passieren? |
Re: Postmessage Problem
Es soll passieren:
Er sendet die Tastenanschläge mit zwischenzeitlichem delay, also z.b.: ENDE Pause, 50msec 1 Pause, 50msec 2 Pause, delay0r 3 Pause, delay0r 4 Pause, delay0r 5 Pause, 50msec EINFG Was er macht: ENDE EINFG Ob er dazwischen Pausen macht weiß ich nicht genau, das sieht man in der Anwendung leider nicht so genau. Auf jedenfall werden keine Nummerntasten gesendet(NICHT Numpad,sondern die anderen). |
Re: Postmessage Problem
Kann es sein, dass ein Fenster bestimmte virtuelle Tastendrücke nicht animmt und kann man dies umgehen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 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