Toon posts:

[delphi] VNC kloon

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb op dit moment 2 programma's. een server en een client.
De server stuurt op aanvraag een screenshot naar de client.
De client stuurt constant de muislokatie naar de server.


maar, wat nu?

Ik wil kunnen klikken op het programma waar de muis op dat moment staat.
Kan dit met Handles? of zijn er betere manieren voor dit probleem?

Verwijderd

Je kan de muis positioneren en de klik (links, rechts, midden of dubbel) simuleren.
Kijk eens in de win32 sdk Help, bij mouse functions/messages

[ Voor 28% gewijzigd door Verwijderd op 19-06-2004 11:43 ]


  • FastBunny
  • Registratie: Januari 2001
  • Laatst online: 24-05 19:40

FastBunny

Give it the Works !

VNC is toch opensource? Wellicht kun je daar in de source kijken hoe hun het gedaan hebben en dat aanpassen naar jouw wens?

Server: Dell PowerEdge R610, 48GB DDR3 1333MHz, 3 x 4TB IronWolf RAID5, Dell H700, VMware ESXi 6.0
Laptop: Dell Latitude E6510, Intel i5-560m, 8GB RAM, 128GB Samsung SSD, 250GB 7200rpm, 15.4" WUXGA FHD
PSN: FastBunny_NL


Verwijderd

Topicstarter
Verwijderd schreef op 19 juni 2004 @ 11:42:
Je kan de muis positioneren en de klik (links, rechts, midden of dubbel) simuleren.
Kijk eens in de win32 sdk Help, bij mouse functions/messages
Het simuleren van de muis is niet moeilijk, maar dan moet ik wel een Handle hebben.
Maar, mischien is het mogelijk om de handle van de bovenste window op te vragen...
FastBunny schreef op 19 juni 2004 @ 11:42:
VNC is toch opensource? Wellicht kun je daar in de source kijken hoe hun het gedaan hebben en dat aanpassen naar jouw wens?
Deze source heb ik al gezien, maar het probleem hiervan is dat deze is geschreven in C (volgens mij MS C++)
Dit ken ik helaas niet

Verwijderd

Verwijderd schreef op 19 juni 2004 @ 11:49:
[...]

Het simuleren van de muis is niet moeilijk, maar dan moet ik wel een Handle hebben.
Maar, mischien is het mogelijk om de handle van de bovenste window op te vragen...
Ja, dat kan aan de hand van XY coordinaten zelfs.
Zie: windowfrompoint en/of childwindowfrom point in de win32 sdk

[ Voor 10% gewijzigd door Verwijderd op 19-06-2004 11:51 ]


Verwijderd

Topicstarter
heb je niet een Handle nodig om deze te simuleren dan?
of bedoel jij gewoon het verplaatsten van de muis op de server?

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-05 23:27

Tomatoman

Fulltime prutser

Je wilt een simuleerde muis over een screenshot laten bewegen. Dat klinkt alsof je een bediening op afstand wilt bouwen òf dat je iemand om de tuin wilt leiden. Kun je wat meer achtergrondinformatie geven over je project?

Een goede grap mag vrienden kosten.


Verwijderd

Verwijderd schreef op 19 juni 2004 @ 11:51:
heb je niet een Handle nodig om deze te simuleren dan?
of bedoel jij gewoon het verplaatsten van de muis op de server?
met die windowfrompoint kan je die handle verkrijgen.
Lees die functie groepen eens ff door in de win32sdk of op msdn.

Maar je kan dacht ik ook een muisklik simuleren op een bepaade positie zonder handle.

[ Voor 12% gewijzigd door Verwijderd op 19-06-2004 12:08 ]


Verwijderd

Topicstarter
Met deze code kan ik nu een "Char" naar het programma onder de muis zenden.
Deze code is wel aan te passen om de VK_LBUTTON en VK_RBUTTON te kunnen zenden (volgens mij, van Char een Integer maken);

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PROCEDURE SendKey(Key : Char);
VAR
  N : Byte;
const
  upper='~!@#$%^&*()_+QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>?|';
BEGIN
  For N := 0 to length(upper) do
    If key = upper[N]
      then
        keybd_event(VK_SHIFT, 1, 0, 0);
  keybd_event(VkKeyScan(key), 1, 0, 0);
  keybd_event(VK_SHIFT, 1, KEYEVENTF_KEYUP, 0);
  keybd_event(VkKeyScan(key), 1, KEYEVENTF_KEYUP, 0);
END;


PROCEDURE X;
VAR
  Handle : HWND;
BEGIN
  Handle := WindowFromPoint(Mouse.CursorPos);
  SetForegroundWindow(HWND);
  SendKey('a')
END;

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Delphi:
1
2
3
4
5
6
7
8
9
10
  SetCursorPos(x,y);
  // Click One
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  Sleep(10);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  Sleep(10);
  // Click Two
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  Sleep(10);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);


Of kijk naar het Delphi VNC project

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
LordLarry schreef op 19 juni 2004 @ 15:48:
Delphi:
1
2
3
4
5
6
7
8
9
10
  SetCursorPos(x,y);
  // Click One
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  Sleep(10);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  Sleep(10);
  // Click Two
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
  Sleep(10);
  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
Deze werkt een stuk makkelijker dan de versie met de handles; bedankt :)

Verwijderd

Verwijderd schreef op 19 juni 2004 @ 19:04:
[...]

Deze werkt een stuk makkelijker dan de versie met de handles; bedankt :)
weet je eigenlijk wel waar je mee bezig bent ?????

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Verwijderd schreef op 20 juni 2004 @ 01:10:
weet je eigenlijk wel waar je mee bezig bent ?????
als ik je nu de system calls ga geven, weet je dan waar je mee bezig bent?

Wat is dat voor vraag? Des te hoger de abstractie des te vatbaarder het wordt voor 'individuen' die wat scriptend willen programmeren. Ooit heeft iemand ASM bedacht... machine code was toch iets te moeilijk...

Steun Elkaar, Kopieer Nederlands Waar!


Verwijderd

Topicstarter
Verwijderd schreef op 20 juni 2004 @ 01:10:
weet je eigenlijk wel waar je mee bezig bent ?????
hoe je een muis-klik moet simmulieren wist ik inderdaad niet (zie mijn eerste post)
Verwijderd schreef op 19 juni 2004 @ 11:41:
Ik wil kunnen klikken op het programma waar de muis op dat moment staat.
Kan dit met Handles? of zijn er betere manieren voor dit probleem?
maar, zou jij een heel project niet maken omdat je 2 regels code niet kent?


edit:

*sluit dit topic maar*
ik weet genoeg om mijn VNC versie af te maken

[ Voor 9% gewijzigd door Verwijderd op 20-06-2004 21:22 ]

Pagina: 1