Sendmessage Do gry [mysz]

0

czesc czy dam rade uzyskac taki kod w którym ustawie punkt 1 czyli np x5 y5
i do tego aby mysz klikała w tym momencie i przytrzymujac prawy myszy wędrowała do punktu 2 np y7 x5 ? ;P

0

Tak, jak bardzo się postarasz to dasz radę.

0

hmm a są gdzies podobne kody które mogą mi pomóc lub byś mi olesio pomógł ? :D

0

podstawy delphi + google(mouse_event + SetCursorPos ); i napiszesz to w 5min sam.
a pytanie nadaje sie tylko do dzialu Newbie. Tam zadawaj reszte swoich pytan jesli nie chcesz zeby Twoje post byly usuwane.
z reszta juz gdzies ostatnio widzialem to pytanie:P

0

Mialem zedytowac post, ale zadałeś w końcu precyzyjniej postawione pytanie. Pogoogluj o funkcjach: SetCursorPos, GetCursorPos
oraz Mouse_Event. Przy ich użyciu zasymulujesz poruszanie jak i klikanie czy trzymanie przycisków myszki. A poza tym, już chyba dzisiaj był taki post. Natomiast nie wiem, czy SendMessage może wysłać jakieś komunikaty związane z myszką. Chyba raczej tylko
te, które związane są z opuszczaniem i wchodzeniem kursora w obszar kontrolki. I o takie podstawy pytaj zawsze w dziale Newbie.

0

a skoro jest to takie łatwe czy pomógł by mi ktoś i podał chociaż połowę kodu ? :D

0

w tym momencie proszisz nas o gotowca. gotowcow sie nie dostaje, cyba ze sie zaplaci > dzial Praca.
czemu nie napiszesz tego sam jesli Ci zalezy? czyzby Ci sie nie chcialo ;>

0

jeżeli bym chciał jakiś porządny program to bym tam to napisał, ale wiem że kod którego potrzebuje jest prosty i dla was trwa pisanie takiego kodu 3 minuty wiec poprosiłem tutaj :D

0

cale zycie bedziesz tak ludzi prosil o te 3 minuty...? nic sie nigdy nie nauczysz z takim podejsciem. Tobie to zajmie 5 + czegos sie nauczysz.

2

cimak: on się zcwanił i na priva mi spamuje. flaq1991: pisz na forum zawsze, bo PMki można tutaj po prostu przeoczyć
dopóki się nie sprawdzi e-maila. A i sam sprawdziłem czy aż takie to trudne. Tobie się po ptostu nie chce samodzielnie
chwile pomyśleć. Poniższy kod u mnie eleganco zaznacza ikonkę IrfanView na pulpicie, bo podałem w tym kodzie takie
współrzędne, jakie pokazal mi stary programik TDWinInfo. Poza tym takie pisanie "dajcie chociaż połowę kodu" - no to
po prostu żałosne trochę. Powinienem Tobie podać po beginie pierwsze 5 linijek i co dalej byś pytał co dalej. Przecież,
nie chce mi się tego sprawdzać, ale mogę się założyć o dowolne pieniądze, że w google na pewno znalazł byś opisy w
jaki spsoób w Delphi użyć tych funkcji, o których wspominaliśmy. Tobie się po prostu nie chce samodzielnie nic robić.
Po tej odpowiedzi, zaraz będą kolejne pytania. Ale pętlę i ewentualnie inne dopracowania kodu to już sobie zrób sam.
Ech, Wy leniuchy, zobaczycie, ktoś niedługo zostanie tutaj nowym modem - to takie posty pewnie wylądują w koszu.
Ostatni raz pomagam na takie lenistwo, bo sam sprawdziłem ten kod i tak dla siebie to już go wkleiłem w całości, bo
wcześniej myślałem, że Mouse_Event "potrzebuje" jeszcze wcześniej funkcji GetCursorPos - lecz jest to tutaj zbędne.

//...
var
  Start_P, Stop_P : TPoint;
begin
  Start_P.X := 154;
  Start_P.Y := 386;
  Stop_P.X := 218;
  Stop_P.Y := 452;
  Application.Minimize;
  SetForeGroundWindow(FindWindow('progman', nil));
  SetCursorPos(Start_P.X, Start_P.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Start_P.X, Start_P.Y, 0, 0);
  SetCursorPos(Stop_P.X, Stop_P.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Stop_P.X, Stop_P.Y, 0, 0);
end;
0

nauczę się ja to wiem ;d proszę bo chce naprawdę napisać program, ja szczerze to z kodów gotowców już się nauczyłem sporo jak na mnie. bardzo mi zależy na tym kodzie no proszę pomóżcie mi.

0

olesio Dziękuje ze postarałeś się i napisałeś mi kod tylko ze ten kod Przenosi tylko kursor w podane ID a nie klika testowałem na pulpicie i w programie hmm ?

0

Pod Windows XP na pewno zminimalizuje aplikację, przełączy focus na pulpit (raczej nazwa procesu od
pulpitu w nowszych Windowsach się nie zmieniła chyba, a przynajmniej tak poderzewam), następnie u
mnie w miejscu gdzie mam ikonkę od IrfanView zaznaczy ją i zostawi oczywiście kursor myszki pod jej
prawym dolnym rogiem, a przynjamniej w tej okolicy. Kod na pewno zaznacza obszar, ponieważ przed
jego wykonaniem, zaznaczam sobie inną ikonkę, a po kliknięciu na button jest zaznaczona ta, którą ja
sobie założyłem. Nie wiem co masz pod określonymi współrzędnymi na pulpicie albo jakie w ogole tam
w kodzie podałeś, ale według mnie pod nowszymi Windowsami to powinno zadziałać. Musisz wiedzieć,
że jeżeli daje jakiś dłuższy niż dwie linijki kod, to zawsze go staram się przetestować pod Delphi 7, w
wersji Personal, a także - póki co - pod systemem Windows XP SP 2 Home PL. Jak nie działa to nic Ci
na to nie poradzę, wedlug mnie powinno działać. Chciałeś kod, który zaznaczy jakiś obszar to dałem.
A jak już wklejasz "na pałę" i nie czytasz mojego opisu, że ja testowałem go na pulpicie w celu takim
by zaznaczył mi ikonkę, a Ty nie potrafisz pod IDE wciskając Ctrl+R, zamienić LEFT na RIGHT to... ;/

0

lecz Błąd tkwi w tym iż program Miał przytrzymywać LPM a on nie przytrzymuj on klika w te miejsce które ustawiłem w start i później klasycznie wędruje do stop position a ja chciałem aby on to przytrzymywał i przez cały czas i puszczał w stop position :D nie da rady jakoś przerobić ?

ps: debilem raczej nie jestem i zmienilem pozycje na jakie prowadził program lecz nie przytrzymywał... :P

2

Ale czy zmieniłeś LEFT na RIGHT tak jak chcesz mieć to u siebie, to już nie jest dla mnie takie oczywiście. Sorry, ale jak ktoś nie
chce wyszukać w google nic samodzielnie, to ja nie wiem czy kod zmienia tak jak należy. Ten kod poniżej na pewno działa, a te
punkty startowe oraz końcowe są na oddalonym obszarem od ikonki, także klikanie w nie nie powoduje zaznaczenia ikonki, ale
poruszenie kursorem z przytrzymanym - w moim przypadku - lewym przyciskiem, powoduje zaznaczenie ikonki i newet, jeżeli
wcześniej była zaznaczona inna. Pod Windowsem XP i dla lewego przycisku kod na pewno działa. Nie działa, o dziwo - u Ciebie
to nie mam pojęćia dlaczego i nic na to nie poradzę. Nic nie wymyśle, co zrobić by kod działał gdzie indziej, bo mi on działa ;/

var
  Start_P, Stop_P : TPoint;
begin
  Start_P.X := 150;
  Start_P.Y := 400;
  Stop_P.X := 216;
  Stop_P.Y := 644;
  Application.Minimize;
  SetForeGroundWindow(FindWindow('progman', nil));
  SetCursorPos(Start_P.X, Start_P.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Start_P.X, Start_P.Y, 0, 0);
  SetCursorPos(Stop_P.X, Stop_P.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Stop_P.X, Stop_P.Y, 0, 0);
end;
0

olesio ale ty mnie chyba nie zrozumiałeś :P kod który mi podałeś klika tylko w ikonkę po czym przechodzi do pozycji stop
a ja chciałem aby na starcie przytrzymał ikonkę i ją przeniósł do pozycji stop :D

0

to chyba ty nie zrozumiales Olesia. Olesio ci juz napisal co i jak i ze u niego dziala. ja do tego dodalem komentarz. to ci powinno wystarczyć.

0

a da sie wklepac jakis kod który zmniejszy prędkosć ? bo mi na 1 myśl właśnie przyszło ze za szybko to klika ;P mozliwe ?

0

mozliwe. sleep(). i nie pisz juz wiecej tylko idz sie podstaw pouczyc.

0

a uraczył bys mi ostatnią podpowiedz ? Gdzie mam wkleic ten Sleep w którym miejscu ? :P

0
flaq1991 napisał(a)

olesio ale ty mnie chyba nie zrozumiałeś :P kod który mi podałeś klika tylko w ikonkę po czym przechodzi do pozycji stop
a ja chciałem aby na starcie przytrzymał ikonkę i ją przeniósł do pozycji stop :D

No to co za problem, ustawiaj kursor na starcie w obszar, na którym na pewno jest ikonka i przenieś ją
podając obszar końcowy na jaki chcesz, tylko że jeżeli tam będzie inna ikonka - to najprawdopodobniej
uruchomisz jakiś program z parametrem jako ta ikonka. Uprzedzę Ciebie, że sprawdziłem i u mnie - na
wspomnianym XP - ikonka kliknięta w jej środek i przeniesiona tym kodem znacznie niżej oraz w prawo
faktycznie się przenosi. Nic innego nie wymyślę. A i jak cimak - radzę samodzielną naukę, od podstaw.

0
flaq1991 napisał(a)

a uraczył bys mi ostatnią podpowiedz ? Gdzie mam wkleic ten Sleep w którym miejscu ? :P

teraz przegiąłeś.

0

no tak wpisałem gdzieś w środku kodu Sleep(6464); i co ? po kliknięciu w button program zacina sie na tyle sekun a nie zwalia ruch myszki dlatego pytam. może olesio znasz odpowiedz ?

0

Ech. Żeby sleep nie zawiesił Tobie programu to musiał być raczej te operację zrobić w wątku (opis i
tak go pewnie olejesz masz na: Wątki). A Sleep jak już,
to odczekuje tyle milisekund, a nie sekund. Wstawiasz go tam, gdzie potrzebujesz. A jak chcesz w
sposób bardzo płynny mieć zaznaczanie z odstępem czasu to nie wiem - może zrób w pętli wraz ze
Sleepem na 100 milisekund (w wątku może być wartośc poniżej stu) przemieszczanie kursora - to
będziesz miał powolne zaznaczanie lub przenoszenie ikonki tak jakby robil by to chyba - nie wiem,
jakiś anemik. Nic więcej nie wymyślę. Poza tym pouczył byś się podstaw to byś ogarnial, a tak to
po 10000000 pytań napiszesz program, coś tam zadziała albo i nie, a później kolejne 100 pytań.

0

nie nie oleje akurat to sobie zaraz przeczytam zawsze chciałem napisać program macro lecz czytałem kilka Artów i juz sobie dałem na wstrzymanie chcialem tylko ten urywek kodu który Będzie plynnie to powtarzał a nie z speedem prędkosci swiatła
dlatego kod mi nie działał wiec to już ostatnie moje pytanie i mój program jest gotowy naprawde to jest dla mnie Biała magia...

0

To ucz się podstaw, to nie będzie magią. Już napisałem co masz zrobić. Chcesz płynnie to w pętli for albo lepiej
repeat ... unil (pętle masz opisane tutaj: Pętle ustawiaj tak
zmienną dodatkową zmienną typu TPoint Cosik.X i Cosik.Y w taki sposób aby dając po nich SetCursorPos oraz
Sleep z krótkim okresem czasu uzyskać taki efekt jakbyś powoli zaznaczał czy tam przesuwał ikonkę. A jak Ci
nie chce się uczyć podstaw w Delphi, to korzystaj z programow typu AutoHotKey, nagrywaj sobie w nim ruchy
myszą oraz naciskania klawiszy, a później generuj gotowe skrypty, które wykonają reszte rzeczy za Ciebie i .

0

No dobra wiem juz ze mi nie pomoŻesz ale spoko :P dzieki za pomoc naprawde ;D nikt inny na tym forum nie odwali gotowca...
a ty jestes wlasnie tym jednym ;D Dziekuje za pomoc, wiem i tak ze raczej sobie nie poradze z tymi Pętlami lecz spróbować mi nikt nie zabrania Pozdrawiam !

0

olesio... ja jednak nie daje rady... Czy Sprzedasz mi ten kod ?

1

Dobra masz, ostatni raz wklejam gotowy kod, bo widzę, że ludzie w dupie to mają co się do nich pisze, nie chce im
się nic samodzielnie kombinować. A mnie myślisz ktoś uczył na początku? Kurs z pierdołami w jednym odcinku juz
w nieisnitejącym piśmie "PC ShareWare" (wydawany przez tych samych co teraz chyba "CD Action"), później takie
zabawy w nie dającym się używac Delphi 1 Demo, a następnie pierwsze programy pod Delphi 3 pochodzącym z CD
od Razorów z bodaj szwecji, którą to płytkę pożyczyl mi kumpel. Babole takie jak nie formatowanie w ogóle kodu i
stosowanie ukrytych Listboxów tworzonych dyniamicznie zamiast TStringList, o których istnieniu nie miałem mimo
czytania helpa pojęcia (widać czytalem tak "uważnie" czytalem). Ale człowiek kombinował, czytał FAQ jakieś tam
z chyba jeszcze usenetu. Coś starał się wykombinowac. A Tobie pisze się gdzie masz poczytać, co masz zrobić, a
Ty dalej nic. Daruj sobie programowanie. Jedno jest pewne. Ode mnie już pomocy nie dostaniesz, bo Ty sobie nie
chcesz dać pomóc coś się nauczyć. Ty chcesz tylko gotowca. Ale to takie portable jak niestety peb przy całym dla
nich szacunku jaki mają wkład w to, że mogę sobie obejrzeć Ryśka z Klanu czy inne cool seriale (to żart :P), ale
tam pomagając każdemu pytającemu w zaliczeniach nauczyli chyba ludzi przychodzących tutaj, że im się należy
pomoc i to natychmiast, na wczoraj "bo nauczyciel nic nie tłumaczył", bo "kod nie działa" itd, itp. Anyway, kod
poniższy u mnie działa na pewno, przesuwa ślamazarnie ikonkę najpierw w prawo, później w dół, jak chcesz to
zrobić w innych kierunkach to oczywiście należy zmodyfikować zmienne X oraz Y dla Stop_P oraz odejmować
piksele, a nie je dodawać. Można wykonac ruch w jednej pętli, ale takie przesunięcie jak teraz jest bardziej
precyzyjne, przy moim założeniu. Zresztą podejrzewam, że jakby ktoś sprawdził powyższe kody, pod innym
systemem niż Windows XP to pewnie przesuwanie by mu zadziałało, ale tego nie jestem pewien w 100% i
nie wiem czy osiągniesz teraz efekt z przesuwaniem jaki chciałeś, ale mnie skutecznie zniechęciłeś aby tu
pytajacych o [CIACH!] traktować poważnie i chcieć im pomóc. I mam nadzieję, że nowy mod tego działu w
szybkim czasie po wybraniu wyp......i ten temat do kosza. Do mnie też nie pisz na PMke nie odpowiem i
idę spać. Do pozostałych czytających: tak, wiem za dobry jestem, marnuje swój wolny czas (a mam go
wiele, no ale bez przesady) pisząc to w ogóle, ale chcialem pomóc, ale pytający jest niereformowalny.

const
  WaitMS = 100;
  MoveByPixels = 5;
var
  Start_P, Stop_P, Move_P : TPoint;
begin
  Start_P.X := 180;
  Start_P.Y := 420;
  Stop_P.X := 216;
  Stop_P.Y := 644;
  Application.Minimize;
  SetForeGroundWindow(FindWindow('progman', nil));
  SetCursorPos(Start_P.X, Start_P.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Start_P.X, Start_P.Y, 0, 0);
  Move_P.X := Start_P.X;
  Move_P.Y := Start_P.Y;
  repeat
    SetCursorPos(Move_P.X, Move_P.Y);
    Move_P.X := Move_P.X + MoveByPixels;
    Sleep(WaitMS);
  until (Move_P.X >= Stop_P.X);
  repeat
    SetCursorPos(Move_P.X, Move_P.Y);
    Move_P.Y := Move_P.Y + MoveByPixels;
    Sleep(WaitMS);
  until (Move_P.Y >= Stop_P.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Move_P.X, Move_P.Y, 0, 0);
end;

EDIT: ech, była szansa zarobku, ale już poszło to niech zostanie, ja nie jestem taki jak nnn [bez obrazy].
I na przyszłośc jak chcesz kupić kod, bo się Tobie nie chce to od tego jest dział forum Offtopic - Praca, a
zresztą wykonujący program wysłal by go pewnie Tobie po zaksięgowaniu wpłaty, a to by nastąpilo raczej
po weekendzie, chyba że wpłacił byś kasę teraz. Czekając na kod, spokojnie sam byś go mógł napisać ;/

1

Dziekuje Dziekuje i jeszcze raz dziekuje. Dobra kodów juz nie będę chcial od jutra zaczynam czytac kurs z tego forum
Zobaczymy czy to się sprawdzi Wielkie Dziekuje !!!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.