Diverse Window Daten auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Stefen.R
Beiträge: 10
Registriert: 29.03.2008 18:51

Diverse Window Daten auslesen

Beitrag von Stefen.R »

Ich bin neu hier und wollte erst einmal "Hallo" an alle sagen !
Ich bin 15 Jahre und Programmiere schon ein paar Jahre in diversen Websprachen wie Perl und PHP.

Nun wollte ich ein neues PHP Projekt starten wobei ich eine Art Schnittstelle zu einem Windowsprogramm benötige.
Ich bin daher auf das hiesige Basic gestossen, da es für die benötigte Routine völlig ausreicht.

Ich habe bei einem Online Spiel mehrere Spielfenster geöffnet, von denen ich jeweils ein paar Daten auslesen möchte, um diese in einer PHP Anwendung weiterzuverarbeiten.
Ich möchte ganz gerne durch Klick mit der Maus auf das jeweilige Window einige Daten ermitteln, im einzelnen sind das :

Fenstertitel
Classname(n)
PID
Handle
Speicherbereich der jeweiligen Fenster Anwendung

Ich habe hier gestern ein kleines Programm gesehen was durch Klick auf das Fenster den Programmnamen anzeigt.
Ich habe heute schon den ganzen Tag gesucht mit diversen Suchkriterien wie "FindWindow" usw, leider finde ich die Routine nicht mehr, leider wurde auch mein Verlauf heute früh gelöscht.

Wie gesagt, ich suche eine kleine Anwendung die die obenen Daten ausliest, vielleicht könnte mir jemand von den hiesigen Experten ein bischen helfen.

Gruss Stefen
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

Ich weiß nicht ob dir das weiterhilft, aber ich hab das damals mal aus langeweile geprogt, vieleicht kannst du damit ja was anfangen.

http://purefreak.pu.funpic.de/data/download/winhacker.rar
Sourcecode und EXE
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Stefen.R
Beiträge: 10
Registriert: 29.03.2008 18:51

Beitrag von Stefen.R »

Danke für das Tool.
Hilft mir auf jedenfall schon weiter, ich kann mir damit schon einem Überblick über die Syntax und Mögichkeiten verschaffen.

Vielleicht hat ja jemand noch sowas nettes-


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

Beitrag von Fluid Byte »

Beim Speicherbereich kann ich dir nicht helfen bzw. weiß ich nicht genau was du meinst. Ich denke du willst wohl die Start- und Endadresse des zugewiesenen Prozessspeichers (drei 's', ist das richtig?) ermitteln oder?

Hier ein Beispiel wie man die ersten vier Sachen auslesen kann:

Code: Alles auswählen

OpenWindow(0,0,0,320,240,"void",#WS_OVERLAPPEDWINDOW | 1)
CreateGadgetList(WindowID(0))
StringGadget(0,5,5,120,25,"",#ES_MULTILINE)

StickyWindow(0,1)

Repeat
	EventID = WaitWindowEvent(50)
	
	If GetAsyncKeyState_(#VK_LBUTTON) & $8000
		GetCursorPos_(cpt.POINT)
		
		hwndFocus = WindowFromPoint_(cpt\x,cpt\y)
		
		lpBuffer = AllocateMemory(255)
		
		; Fenstertitel
		GetWindowText_(hwndFocus,lpBuffer,255)				
		
		Wininfo$ = "Window Title = " + PeekS(lpBuffer) + #CRLF$
		
		; Classname
		GetClassName_(hwndFocus,lpBuffer,255)
		
		Wininfo$ + "Classname = " + PeekS(lpBuffer) + #CRLF$
		
		; PID
		GetWindowThreadProcessId_(hwndFocus,@ProcessId)
		
		Wininfo$ + "PID = " + Str(ProcessId) + #CRLF$		
		
		; Handle
		Wininfo$ + "Handle = " + Str(hwndFocus)
		
		FreeMemory(lpBuffer)
				
		SetGadgetText(0,Wininfo$)		 	
	EndIf
	
	If EventID = #PB_Event_SizeWindow
		ResizeGadget(0,5,5,WindowWidth(0)-10,WindowHeight(0)-10)
	EndIf
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

@Fluid Byte: Ja, Prozessspeicher mit 3x "s"!
(Win 11 64-bit, PB 6.04 und 6.10)
Stefen.R
Beiträge: 10
Registriert: 29.03.2008 18:51

Beitrag von Stefen.R »

@Fluid Byte
Ich danke Dir für Dein Hilfe, der Code war genau das was ich suchte, den Rest schaffe ich diesbezüglich jetzt selbst.

Ich bin wirlich verblüfft über die mächtige Syntax von PB.

Jetzt habe ich nur noch eine Frage zu einem anderen Problem, wie kann ich eine Zeichenfolge im Prozessspeicher suchen.
Ich möchte gerne eine immer 10 Zeichen lange ID auslesen die auch immer zehn Bytes nach einem bestimmten Wort im Speicher steht.

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

Beitrag von Fluid Byte »

Das was du suchst ist ReadProcessMemory_(). Gibt das mal in die Boardsuche ein (ohne Klammer und Unterstrich), sind exakt 19 Beiträge.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Stefen.R
Beiträge: 10
Registriert: 29.03.2008 18:51

Beitrag von Stefen.R »

Unter "ReadProcessMemory" hatte ich schon geschaut, die Funktion ist ja fast aus jeder Sprache (C, Delphi) usw. bekannt und fast gleich.

Ausser ein Posting habe da da wirklich nicht viel für mich gefunden.
Vielleicht habe ich ja auch was übersehen, trotzdem Danke.

Nicht übel nehmen, habe das hiesige Basic erst vor zwei Tagen entdeckt, bin daher noch nicht so bewandert in der Sprache, sie ist ja doch etwas Umfangreicher wie Blitz und desgleichen.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Naja, für 15 jahre bist du mir eigentlich schon zu gut. Bild
Windows 10 Pro, 64-Bit / Outtakes | Derek
Stefen.R
Beiträge: 10
Registriert: 29.03.2008 18:51

Beitrag von Stefen.R »

Ich bin wirklich erst 15 Jahre, beschäftige mich aber auch schon von früh auf mit Computern, man muss eben früh anfangen wenn man was werden will..

Wenn ich das Abi in der Tasche habe, werde ich mich eventuell auch Selbstständig machen, möchte was im Bereich Scriptprogrammierung machen, habe schon so einiges in Perl und auch PHP geschrieben.

Ich bin jetzt auch wieder dabei ein neues Projekt zu erstellen, bin daher seit einer Woche daran diese Schnittestelle zu erstellen, um die Daten aus der Windowsanwendung in das Script zu bekommen.

Daher bin ich auch auf euch gestossen, mit C, VB und Delphi ist das alles viel zu Aufwendig für diese kleine Routine.

@Fluid Byte
Du scheinst ja recht gut in PB zu sein, vielleicht kannst Du mir noch einmal mit einem Ansatz helfen in punkto der Speicher Auslese Funktion.

Gruss Stefen
Antworten