Hook ...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Und du solltest deinen Namen "PBProgger" mal überdenken, weil du nicht wirklich einer bist.

So, mein Freund, jetzt werde sogar ich langsam sauer. Ich habe dir genug "Hinweise" gegeben, dass dein Verhalten gerade nicht gut passt, aber du brauchst wohl echt eine direkte Erklärung, was hier falsch läuft.

Wir versuchen dir zu helfen, zeigen dir wo es lang geht, tollerieren es, wenn du ans anblökst, dass wir dich nicht als "Anfänger" behandeln sollen. Postest aber im Anfänger-Forum. Dann versuchen wir dich in eine richtige Richtung zu schubbsen, und du fragst weiter, und weiter. Nach einer gewissen Zeit merkt man dann, dass du eigentlich garnicht verstanden hastm wie das funktioniert was wir dir erklären wollen (in dem Fall die Hooks), und fangen nochmal an es dir zu erklären.

Dafür werden wir angemault.

Du bekommst was nicht hin, hörst nicht auf uns, wir helfen dir weiter, erklären dir alles, und wir bekommen dafürt einen auffen Deckel.

Zudem machst du dich lächerlich, wenn du herumschreist, was für ein großartiger Programmierer du doch wärst, aber nichtmal hinbekommst, die UDP-Lib zu nutzen. Dann fragst du sogar nach, wie man den UDPBroadcast-Befehl nutzt.
Das ist an sic nicht schlimm, aber mit deinem "Ich-bin-ein-pro"-Gehabe, bist du verdammtnochmal richtig deftig ins Wasser damit gefallen.

Was genau willst du eigentlich von uns?
Sollen wir dich behandeln wir einen Anfänger?
Dann raten wir dir, dieses oder jenes ersteinmal sein zu lassen. Wir können dich an die Materie dann heranführen, aber nichts tiefergründiges erklären- und diese Materie IST tiefgründig und komplex.
Oder wie einen Fortgeschrittenen?
Dann stoßen wir dich in die richtige Richtung, und den Rest musst du schon selbst tun. Vor allem in diesem Fall kann man dir keine "fertige" Lösung basteln, weil es wirklich nicht einfach ist, und es 1000e Möglichkeiten gibt, die zudem auch auf 1000en von Wegen umgangen werden können.
Wenn du wirklich sooo erfahren wärst, würdest du wissen, wie man sich mit der Materie auseinandersetzt, und die Richtung, die wir 'vermuten' und in die wir dich stoßen wollen, zu nutzen.

Das du "Hallo Welt" programmieren sollst, war, soweit ich das verstanden habe, nicht wörtlich gemeint. Es bedeutet, dass du erstmal die Grundlagen verstehen solltest, bevor du in sowas hineinspringst. Dafür brauchst nunmal eine gewisse Erfahrung (die nicht nur durch Wissen des Grunlegendsten kommt), warscheinlich einen Petzold, und großes Wissen über den Ablauf von Microkernel-Betriebssystemen (WINNT).

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Bild
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

@Tafkadasom2k5: Genau so war mein Hinweis auf Hello World gemeint... Wenigstens Du verstehst... :wink:
PBprogger hat geschrieben:also Real wenn du kein noob bist kannst du es sicher besser... du kannst dich jetzt beweißen...
Ich werde meine Zeit nicht damit vergeuden, irgendwem irgendwas zu beweisen. Weisst Du PBprogger, ich mach das hier im Forum so: Ich schau hier ab und zu rein und achte dann besonders auf die Themen, die mich interessieren weil ich a) selbst Hilfe suche oder b) mich damit beschaeftigt hab. Zu Deinen Fragen kann ich nur soviel antworten:
1. Ich habe mich auch mal mit einfachen Hooks beschaeftigt, um sowas programmieren zu lernen.
2. Ich hab auch mal eine Funktion zum Versenden von UDPBroadcasts gebraucht und hab sie dann selbst als Lib fuer PureBasic erzeugt.
Beide Dinge findest Du auf uebrigens auf meiner Seite zum Download inkl. Quellcode fuer PureBasic.

Ich sag's mal gerade heraus (um Dir das Gruebeln wie beim Hello World zu ersparen): Schau dir Beispiele an und spiel damit ein wenig rum. Irgendwann kennst Du die Befehle und wie man damit umgeht. Aber stell hier im Forum bitte gezielte Fragen und nicht sowas wie "Welche API-Befehle kennt Ihr"! Wenn Du bei Google nach Hilfe suchen solltest, bezieh das nicht nur auf PureBasic konkret, sondern auf Programmierung im Allgemeinen. Viele Beispiele im Web kann man ganz leicht auf PureBasic portieren oder zumindest Ansaetze fuer eine Umsetzung in PureBasic finden. Ich schreib das hier nicht um irgendwas raushaengen zu lassen sondern weil ich es einfach angenehm finde, wenn gerade die Frage eines Anfaengers (manchmal auch von mir selbst) schnell und aussagekraeftig beantwortet wird. Die Leute die in diesem Thread geantwortet haben sind praktisch staendig hier im Forum vertreten. Eine abschliessende Antwort konnte noch keiner geben, weil von dir keine konkrete Frage kam bzw. Du den Quellcode auf dem silbernen Tablett serviert zu bekommen erwartest. Und wie es Kaeru schon schrieb, damit wird hier keiner seine Zeit verschwenden wollen.

Gruss
Rene
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Das ist ja alles schön und gut aber wie kann ich denn jetzt einen Hook auf eine Datei machen? Also wie das mit dem WriteFile_() geht, das weiss ich auch was es ist.

Wie geht das denn jetzt? Kann mir denn keiner helfen? :cry: :cry: :cry:

<---- API Vollprofi!
Windows 10 Pro, 64-Bit / Outtakes | Derek
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

:allright:
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

das ist wie
"ich code jetzt seit 5 wochen, es ist zeit fuer mein erstes mmorpg"

hach, ich finds schoen hier ^^
amiga rulez...
Rebirth Software
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Ach du Scheiße...

Besser hät ich das jetzt nicht sagen können...
Mir ist jetzt erst aufgefallen wie unfreundlich, unkonkret, ungut, ... mein Post war... :cry: .
Ich entschuldige mich bei euch allen, weil ich euch ständig aufhalte anderen zu helfen und mich noch nicht einmal richtig mit einem Test von sämmtlichen Hooks aauseinander gesetzt hab.

Eines muss ich aber schon noch sagen...ich habe nie gesagt das ich ein super PBler bin oder ein >pro< coder. Ich halte mich auch nicht für einen besonders guten progger, ich kenne nicht mal ein 10tel aller Befehle (Nur so aus dem Bauch geschätzt).

Ich glaube das vorher hat jeder gelesen, und haltet mich jetzt für hochnäsig und präpotent... aber ich kann euch allen versichern das ich das in echt nicht bin... hoffe ich ...

So...

Vieleicht kann ich jetzt eine konkrete Frage stellen...

Ich habe einen Globalen-Hook probiert, mit der Konstante #WH_KEYBOARD_LL...doch da kam kein Event raus...Ich hab ihn mit den folgenden Variablen erstellt:

Code: Alles auswählen

Global hook
Global Quit


Procedure HookProc(nCode.l,wParam.l,lParam.l)
  If GetAsyncKeyState_(#VK_K)
   MessageRequester("Message",">k< pressed.")
  EndIf
  If GetAsyncKeyState_(#VK_ESCAPE)
   Quit=1
  EndIf
 ProcedureReturn CallNextHookEx_(hook,nCode,wParam,lParam)
EndProcedure


hInstance=GetModuleHandle_(0)
hook=SetWindowsHookEx_(#WH_KEYBOARD_LL,@HookProc(),hInstance,0)


Repeat
 
 Delay(1)
Until Quit=1
Also wie ich schon sagte, ich kenne nicht mal ein 10tel der Befehle und GetModuleHandle_(0) ist einer davon...

Also, eine konkrete Frage wäre was macht GetModuleHandle_(0)? Und was bedeutet/macht der Parameter >0<?


Sorry at all!


@Fluid Byte

Ich habe auch nie gesagt das ich mich mit API gut auskenne. Ich sagte ich weiß was API ist!!!


:cry: :cry: :cry:
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ich glaube das vorher hat jeder gelesen, und haltet mich jetzt für hochnäsig und präpotent
Ich halte dich für pubertär, inkompetent und ein bischen größenwahnsinnig.

"Sorry at all!" :mrgreen:
Also, eine konkrete Frage wäre was macht GetModuleHandle_(0)? Und was bedeutet/macht der Parameter >0<?
Du verwendest den Befehl widererwartend richtig, also was soll die Frage?

Du hast die Schwelle an der dich noch jemand ernst nehmen würde lange überschritten...

PS: Müllabfuhr bitte!
Windows 10 Pro, 64-Bit / Outtakes | Derek
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Wenn ich GetModuleHandle_(0) richtig verwende warum funtzt mein Code dann nicht?

PS: Müllabfuhr bitte!
Warum?
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Du fängst jetzt alle Nachrichten ab, die dein eigenes Programm empfängt.
Der vorletzte Parameter von SetWindowsHookEx ist die Instanznummer, des Programmes, welches die Nachrichten empfangen soll. In dem Fall bist DU das ja, also Übergibst du "GetModuleHandle(0)". Durch den Parameter "0" gibt dir GetModuleHandle den Handle des eigenen programmes wieder (sofern ich das richtig verstehe).

Dadurch Ist dein Programm berechtigt, diese Nachrichten zu empfangen.

Die Prozedur oben ist die Callback-Prozedur.
Dort musst du nicht GetAsyncKeyState abrufen, sondern die WM_Messages abfangen, die in "nCode" stehen. Die dazugehörigen wParams und lParams stehen in (wie sollte es anders sein ;) ) in lParam und wParam.

Theoretisch müsste da stehen:(sofern das so funktioniert, das kann ich dir nicht 100%ig versichern)

Code: Alles auswählen

Procedure HookProc(nCode.l,wParam.l,lParam.l)
  If nCode = #HC_ACTION
    ;machwas
   EndIf
 ProcedureReturn CallNextHookEx_(hook,nCode,wParam,lParam)
EndProcedure 
Gr33tz
Tafkadasom2k5

Edit: Konstante ausgewechselt, da falsch gewesen ;)
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Antworten