Avatar billede ziron Nybegynder
08. februar 2001 - 08:37 Der er 40 kommentarer og
1 løsning

mouse click

jeg vil lave et program med en knap.
når man trykker på knappen skal musen lave et auto clik????

/ZIRON
Avatar billede borrisholt Novice
08. februar 2001 - 08:40 #1
Hvad er et auto klik ? et klik et andet std på din form eller hvad ?

Jens B
Avatar billede ziron Nybegynder
08. februar 2001 - 08:42 #2
okay jeg kan godt høre det lyder forkert...

Det er hvor musen bare laver et clik ligesom når man selv laver et clik med sin hånd???
Avatar billede borrisholt Novice
08. februar 2001 - 08:45 #3
SLÅ WM_LBUTTONDOWN op i din MSDN.

Jens B
Avatar billede ziron Nybegynder
08. februar 2001 - 08:48 #4
tak jeg vil prøve, men du skulle vel ikke lige inden med et eks.???
Avatar billede borrisholt Novice
08. februar 2001 - 08:51 #5
jooeee .... Kig lidt på den her .. tilføj selv knapper og events :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Gauges, ExtCtrls, StdCtrls, OleCtrls, SHDocVw, HttpProt;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    IeHandle : HWND;
    IeRect : TRect;
    IeWidth, IeHeight : Integer;
  public
  end;

var
  Form1: TForm1;

implementation
uses
  ShellApi;
{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i : DWORD;
  point : TPoint;
begin
  point.x := Random(IeWidth);
  point.y := Random(IeWidth);
  SetCursorPos(point.x,point.y);
  i:=  Integer(@point);
  IeHandle := FindWindow(\'IEFrame\', nil);
  PostMessage(IeHandle,WM_LBUTTONDOWN,MK_LBUTTON, i);
  PostMessage(IeHandle,WM_LBUTTONUP,0, i);
  SetWindowtext(IeHandle, PChar(timeToStr(Now)));
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  ShellExecute(Handle,\'open\',\'iexplore\',\'http://www.yahoo.com\',nil,SW_MAXIMIZE);

  While IeHandle = 0 do
  begin
    Iehandle := FindWindow(\'IEFrame\', nil);
    Sleep(100);
    Application.ProcessMessages;
  end;

  Windows.GetClientRect(IeHandle,IeRect);
  IeWidth := IeRect.Right - IeRect.Left;
  IeHeight := IeRect.Bottom - IeRect.Top;
//  HttpCli1.Location := \'http://borrisholt.com\';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := not Timer1.Enabled;
  if Timer1.Enabled then
    Button1.Caption := \'Stop\'
  else
    Button1.Caption := \'Start\';
end;

initialization
  Randomize;
end.


Den åbner din Internet Explore og klikker tilfældigt rundt på den ....

Jens B
Avatar billede ziron Nybegynder
08. februar 2001 - 09:20 #6
det ser jo godt ud, men det som dette gør er det ikke at åben en browser når der klikkes.

det skal være som, hvis musen er over \"denne com.\" og der dobbelt klikkes på knappen (som skal være i mit program) åbnes \"denne com.\"

???

/ZIRON
Avatar billede borrisholt Novice
08. februar 2001 - 09:23 #7
HEST ! Det fattede jeg ikke en meter af !

Jens B
Avatar billede ziron Nybegynder
08. februar 2001 - 09:27 #8
okay...

det eks. du lige gav mig, gør det ikke det at når man trykker på knappen åbner den så ikke en browser???
Avatar billede borrisholt Novice
08. februar 2001 - 09:31 #9
HEST ! Nu må du udtrykke dig klart ! Jeg fatter ikke en meter !

Jens B
Avatar billede ziron Nybegynder
08. februar 2001 - 09:36 #10
i den kode du gav mig... står der noget med \"ShellExecute(Handle,\'open\',\'iexplore\',\'http://www.yahoo.com\',nil,SW_MAXIMIZE);\" & \"//  HttpCli1.Location := \'http://borrisholt.com\';\" hvad gør disse ting???

 
Avatar billede borrisholt Novice
08. februar 2001 - 09:44 #11
Ziron >>>

Det eksempel jeg gav dig lukker først din Internet Explore op på adressen Http://Yahoo.com, fordi så er jeg sikker på at der er en Ie til stede ... Den næste linje er et levn fra et hact ind i IE .. Den er udkommenteret og har i dag ingen betydning, og skulle være sletter forlængst ......

Det der er humlen er at du skal have et handle til det vindue du vil klikke på ...
Så skal du have en position du ønsker at klikke på, den ligger du i en TPoint Stuktur, også kalder du bare PostMessage()

Slå WM_LBUTTONDOWN op i din MSDN så får du hele historien .. Det gjorde jeg ....

Jens B
Avatar billede ziron Nybegynder
08. februar 2001 - 09:45 #12
jeg vil prøve tak
Avatar billede ziron Nybegynder
08. februar 2001 - 13:07 #13
det ser lidt sort ud...

EKS. pleas???

kan man ikke lave det mere enkelt end det eks. jeg har fået???

/ZIRON
Avatar billede borrisholt Novice
08. februar 2001 - 13:19 #14
procedure TForm1.Button1Click(Sender: TObject);
var
  i : DWORD;
  point : TPoint;
begin
  point.x := 47;
  point.y := 11;
  SetCursorPos(point.x,point.y);
  i:=  DWORD(@point);
  IeHandle := FindWindow(\'IEFrame\', nil);
  PostMessage(IeHandle,WM_LBUTTONDOWN,MK_LBUTTON, i);
  PostMessage(IeHandle,WM_LBUTTONUP,0, i);
end;



simplere kan det vel ikke blive ?

Jens B
Avatar billede ziron Nybegynder
09. februar 2001 - 08:55 #15
nej det ser godt ud men når jeg prøver at compile det kommer denne fejl:

\"[Error] Unit1.pas(36): Undeclared identifier: \'IeHandle\'\"

skal IeHandle defineres nogen steder???

/ZIRON
Avatar billede cruzer Nybegynder
10. februar 2001 - 23:27 #16
Skal defineres under Variabler ( \"var\" )

Procedure .......
var
i:        DWORD;
point:    TPoint;
IeHandle: THandle;

hvis det bliver for svært så find en \"Learn delphi in 24 days\".. :)

CruZer
Avatar billede ziron Nybegynder
12. februar 2001 - 09:57 #17
tak for hjælpen, det virker også sådan nogenlunde...
det den gør er at den fløtter mussen til \"point.x,point.y\", men der kommer ikke noget click som jeg gerne ville have...

Hvad kan jeg gøre???
Avatar billede borrisholt Novice
12. februar 2001 - 10:13 #18
SLÅ WM_LBUTTONDOWN op i din MSDN.

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 10:16 #19
mener du hos microsoft???

der synes jeg ikke der står noget...
Avatar billede borrisholt Novice
12. februar 2001 - 10:47 #20
Jeg synes nu der står en masse ..... Det står alt hvad jeg har behov for ...

Nå  placer et memofelt på din form,  samt en timer .....

Skriv så det følgende kode :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Lbtab,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align := alLeft;
  Memo1.Clear;
end;

procedure TForm1.FormClick(Sender: TObject);
var
  Pos : TPoint;
begin
  GetCursorPos(Pos);
  Pos.x := Pos.x - ClientOrigin.x;
  Pos.y := Pos.y - ClientOrigin.y;
  Memo1.Lines.Add(format(\'Clicked at [%d,%d]\',[pos.x, pos.y]));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Point : TPoint;
begin
  Point.x := Random(Width - Memo1.Width)+Memo1.Width;
  Point.y := Random(Height);

  PostMessage(Handle,WM_LBUTTONDOWN,MK_LBUTTON, MAKELPARAM(point.x,point.y));
  PostMessage(Handle,WM_LBUTTONUP,0, MAKELPARAM(point.x,point.y));

  Point.x := Point.x + ClientOrigin.x;
  Point.y := Point.y + ClientOrigin.y;
  SetCursorPos(point.x,point.y);
end;

initialization
  randomize;
end.

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 11:02 #21
så kommer denne fejl \"[Fatal Error] Unit1.pas(6): File not found: \'Lbtab.dcu\'\"????

/ZIRON
Avatar billede borrisholt Novice
12. februar 2001 - 11:04 #22
...hmmmnnn er du HELT ny i programmerings verden ?

bare slet den ....

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 11:06 #23
okay det kunne være den blev brugt...

men UNDSKYLD...

/ZIRON
Avatar billede ziron Nybegynder
12. februar 2001 - 11:16 #24
ja det ser godt ud, i memo\'en kommer der frem hvor mussen står, men den laver ikke noget click???
Avatar billede borrisholt Novice
12. februar 2001 - 11:19 #25
ziron  >> Har du læst koden eller blot skrevet den af ? HVORNÅR kommer der noget i memo feltet ? Når der kommer et klik på din form .. Det er sat ind i et ONCLICK event ....

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 11:30 #26
lige kigget den igennem...

jeg har lavet formclick om til en buttonclick.
når jeg klikker på knappen kommer \'point\'ne\' frem i memo\'en og så sker der ikke mere???
Avatar billede borrisholt Novice
12. februar 2001 - 11:33 #27
Nej .... Du er sq helt ny ....

Så skal du klikke på knappen og ikke på formen .. Altså sende dine events den vej ....

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 11:37 #28
ja helt dum er jeg sku ikke det er det jeg har gjort...
jeg får også ´noget frem i memo\'en men den laver stadig ikke det click jeg var ude efter???
Avatar billede borrisholt Novice
12. februar 2001 - 11:42 #29
tilføj en knap med et on click evente og så det her :

procedure TForm1.Timer1Timer(Sender: TObject);
var
  Point : TPoint;
begin
  Point.x := Random(Button1.Width);
  Point.y := Random(Button1.Height);
  PostMessage(Button1.Handle,WM_LBUTTONDOWN,MK_LBUTTON, MAKELPARAM(point.x,point.y));
  PostMessage(Button1.Handle,WM_LBUTTONUP,0, MAKELPARAM(point.x,point.y));

  Point.x := Point.x + Button1.ClientOrigin.x;
  Point.y := Point.y + Button1.ClientOrigin.y;
  SetCursorPos(point.x,point.y);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := TimeToStr(now);
end;


Nu gedder jeg ikke svare på det samme spørgsmål igen ....

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 11:49 #30
ja og det gør så bare at når jeg klikker på knappen kommer der til at stå klokken i form1.caption...

jeg kunne vel ikke sende mit projekt til dig vis du lige har 5 min???
Avatar billede borrisholt Novice
12. februar 2001 - 11:54 #31
ziron  >> Hvad skulle den ellers lave ? Du har spurgt hvordan man laver et klik .. Det har jeg så vist dig .. Det er din egen opgave at skrive kden for hvad du vil have til at ske når der bliver klikket på diverse kontroller ...

Derfor laver mit ptogram ikke noget intiligent der bliver klikket ....

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 12:04 #32
det program \"du\" ha rlavet til mig, gør jo det at det finder ud at hvor mussen står og så skriver den det ned i memo\'en. men det som det skulle gøre var at man fx har sit program (som ikke er maksimeret) med en knap. og man kan se in baggrund med \"Denne com.\".
focuser på knappen og hold mussen over \"denne com.\" og truk så \"enter\" så knappen bliver trykket ned.
og derefter skulle der komme focus på \"skrivebordet\" og \"denne com.\"???
Avatar billede borrisholt Novice
12. februar 2001 - 12:07 #33
Og problemet er ? Find dit skrive bord, eller handlet til samme og smid beskeder den vej ..... Ved du hvordan Window fungerer ?

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 12:15 #34
lidt... men jeg tænker på når det er man selv klikker med sin hånd på sin mus, sker der det at det udfører et click på computeren, det er sådan et click jeg vil prøve at lave... det skal ske når man klikker fx. på en knap???

er der ikke en komando for et sådan click???

/ZIRON
Avatar billede borrisholt Novice
12. februar 2001 - 12:16 #35
Den har du fået .....

Jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 12:20 #36
ja sådan, den jeg har fået gør det at den kun flytter musen til det sted man har defineret ved hjælp af \'point\' men den laver ikke noget click med \'postmessage\'???
Avatar billede borrisholt Novice
12. februar 2001 - 12:22 #37
Det er kund for sjov skyld jeg flytter musen .. Den har INTET med et klik at gøre ! Og jo den klikker der hvor jeg har flytter musen hen ......

EOA (End of Answer)

jens B
Avatar billede ziron Nybegynder
12. februar 2001 - 12:29 #38
okay men jeg kan stadig ikke få postmessage til virke, og den laver ikke noget tryk???

k...

/ZIRON
Avatar billede quarter Nybegynder
05. april 2001 - 19:00 #39
tsk tsk...

var point: Tpoint;
    IeHandle: HWND; 
begin
IeHandle := FindWindow(\'IEFrame\', nil);
point.x := 400;
point.y := 225;
SetCursorPos(point.x,point.y);

mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
//DISSE 2 linier laver et museklik...
end;

Avatar billede ziron Nybegynder
23. april 2001 - 00:25 #40
quater det var lige det jeg lette efter, hvis du vil have point så svar lige???

/ZIRON
Avatar billede quarter Nybegynder
30. april 2001 - 20:27 #41
dejligt at høre at du kunne bruge det.

hvis du vil have mere at vide om winAPI så kig her:

http://www.vbapi.com/ref/index.html
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester