Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 09:33

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



AutoIT in VB.NET übersetzen

Discussion on AutoIT in VB.NET übersetzen within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
AutoIT in VB.NET übersetzen

Hi,
ich hab hier noch den Loader von lolkop (wurde in AutoIT geschrieben) für private Silkroad Server und ich wollte den mal in VB.NET nachbauen, jedoch komme ich an einer Stelle nicht weiter:
Code:
If memread($mid, 0x633D00, 'byte[2]') = '0x7547' Then
     'irgendwas machen, z.B. eine MsgBox anzeigen
EndIf

'Hier noch die memread Funktion:
Func memread($mid, $adress, $type = 'dword')
	Local $struct = DllStructCreate($type)
	DllCall($kernel32, 'int', 'ReadProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', '')
	Return DllStructGetData($struct, 1)
EndFunc   ;==>memread
Wenn ich nun Silkroad über das Tool starte, dann wird sofort die MsgBox angezeigt (und auch "Please execute Silkroad.exe", weil ich die MsgBox durch was anderes ersetzt habe (memwrite), aber das ist gerade egal).
Nun habe ich es mal versucht in VB.NET nachzumachen, jedoch klappt das nicht, mein Code zurzeit:
Code:
Dim meinProzess As Process() = Process.GetProcessesByName("sro_client")
Dim Silkroad_Online As Process = meinProzess(0)
Dim mid As IntPtr = OpenProcess(&H10, False, CUInt(Silkroad_Online.Id))
Dim bytes As Byte() = New Byte(2) {}

If ReadProcessMemory(mid, &H633D00, bytes, 2, 0) = &H7547 Then
     'hier nun z.B. die MsgBox anzeigen
End If
Wenn ich es nun ausführe passiert nichts, keine MsgBox, aber auch keine Fehlermeldung..
Vielleicht kann mir ja jemand helfen, der sich mit beiden Sprachen auskennt...
Kraizy​ is offline  
Old 01/17/2011, 13:53   #2
 
Endecs's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 2,256
Received Thanks: 2,348
Wieso
"= &H7547" &H steht für 0x und du readest einen Wert nicht einen Offset
2. Kannst du ein "else" reinschreiben.
Also

If ReadProcessMemory(mid, &H633D00, bytes, 2, 0) = 7547 Then
msgbox("1")
else
msgbox("2")
End If

msgbox("2") kommt dann wenn es nicht 7547 ist
Endecs is offline  
Old 01/18/2011, 10:21   #3
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
Wenn "&H" für "0x" steht, dann ist doch "= &H7547" richtig, weil im AutoIT-Code wird ja auch "0x7547" und nicht "7547" benutzt...und das Else brauch ich nicht, weil er die MsgBox zu 100% anzeigen muss, so wie im AutoIT-Code..wenn er das Else ausführt, dann hab ich was falsch gemacht...
Ich bin mir halt nicht sicher ob ich die Parameter beim ReadProcessMemory richtig übergeben habe, deswegen wird die MsgBox ja auch nicht angezeigt.
Kraizy​ is offline  
Reply




All times are GMT +1. The time now is 09:33.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.