Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 02:42

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

Advertisement



Dllcall auf eigener dll?

Discussion on Dllcall auf eigener dll? within the AutoIt forum part of the Coders Den category.

Closed Thread
 
Old   #1
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Dllcall auf eigener dll?

Servus,

hab mir eben ne kleine .dll in C++ geschrieben.
Die führt eine einfache Main funktion aus, die den typen int besitzt.
Also, sobald die dll in einen Process attached wird, wird die Main Funktion ausgeführt und eine MessageBox wird geöffnet. Diese befindet sich ebenfalls in der Main Funktion.

Nun meine Frage.
Kann ich diese Funktion mithilfe von Autoit aufrufen wie z.B mit dem dllcall ?
Logtetsch is offline  
Old 05/10/2012, 18:42   #2


 
Lawliet's Avatar
 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
Willst du sie Injecten? Ansonsten geht das natürlich mit DllCall.
Lawliet is offline  
Old 05/10/2012, 18:56   #3
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Beides.

Das injekten klappt ja auch mit AutoIt.
Aber wie kann ich das jetzt mit Dllcall aufrufen ?

Hier mal meine Main Funktion

PHP Code:
#include <Windows.h>
#include <iostream>

int Main()
{
    
MessageBoxA (NULL"Lol rofl""xD"NULL);
    return 
0;
}


BOOL WINAPI DllMain(HINSTANCE hInstanceDWORD dWORDLPVOID lpVoid)
{
    switch(
dWORD)
    {
    case 
DLL_PROCESS_ATTACH:
        
Main();
        break;
     case 
DLL_PROCESS_DETACH
        break;
    }
    return 
TRUE;

Logtetsch is offline  
Old 05/11/2012, 20:03   #4
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
Was genau hast du den vor? Möchtest du eine .dll in deinem Script laden, welche beim laden eine Funktion ausführt? Soll die .dll einen Thread in deiner AutoIt .exe startet, welche Aufgaben übernimmt, oder beinhaltet die .dll nur Funktionen, die du per DllCall() ausführen möchtest?
Das geht nirgendwo wirklich heraus, da du DllCall() aber erwähnt hast gehe ich mal von letzterem aus.

Ich habe einfach mal ein Beispiel geschrieben, welches alle genannten Fälle beinhaltet:

AutoIt .au3:
Code:
$hDll = DllOpen("DLL.dll")	;Dll wird geladen -> DllMain -> DLL_PROCESS_ATTACH
							;Funktionen der DllMain werden ausgeführt:
							;ruft "MessageCall" auf und erstellt anschließend den Thread "MessageThread"

If Not @error Then
	$ReturnString = DllCall("DLL.dll", "str", "GetText") ;ruft die Funktion "GetText" aus der .dll auf
	If @error Then
		MsgBox(0, "Fehler", @error)
	Else
		MsgBox(0, "", $ReturnString[0])
	EndIf

	DllClose($hDll)
EndIf
C++ .dll
Code:
#include <Windows.h>

extern "C" __declspec(dllexport) LPSTR GetText(void)
{
	return "GetText() -> $ReturnString[0]";
}

DWORD WINAPI MessageThread(LPVOID lpParameter)
{
	MessageBoxA(0, (LPCSTR)lpParameter, "MessageThread", MB_OK);
	return 0;
}

int MessageCall(LPCSTR lpText)
{
	MessageBoxA(0, lpText, "MessageCall", MB_OK);
	return 0;
}

int WINAPI DllMain(HINSTANCE hDllInstance, DWORD dwReason, LPVOID)
{
	if(dwReason == DLL_PROCESS_ATTACH)
	{
		MessageCall("Text");
		CreateThread(0, 0, (LPTHREAD_START_ROUTINE)MessageThread, (LPVOID)"Text", 0, 0);
	}
	//...

	return TRUE;
}
KDeluxe is offline  
Thanks
1 User
Old 05/11/2012, 22:47   #5
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Ja. Das war genau das, wo nach ich gesucht habe.

#closerequest
Logtetsch is offline  
Old 05/12/2012, 13:43   #6


 
Lawliet's Avatar
 
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
#closed
Lawliet is offline  
Closed Thread


Similar Threads Similar Threads
[DllCall] FRAPS mit Autoit ansteuern
06/03/2011 - AutoIt - 0 Replies
Hallo erstmal :) Folgendes FRAPS ist ja ein Benchmark-, Screencapture- und Echtzeitvideoaufnahmeprogramm für DirectX- und OpenGL-Anwendungen. --> mich interessieren allerdings nur die Frame Benchmark Funktionen. http://www.fraps.com/images/33fps.png
[Frage] DllCall, EndScence, Hook, LUA Injection
04/24/2011 - General Coding - 10 Replies
Hallihallo, ich bin mir nicht ganz sicher, ob da hier richtig ist, da es sich auf WoW bezieht. Ich möchte via AutoIt ein kleines Tool schreiben, mit dem ich z.B. den 'Charakter erstellen' Button drücken kann, ohne das WoW Fenster maximiert zu haben (ControlClick, Mouseclick plus funktionieren bei WoW nicht). Dazu hab ich mich natürlich schon schlau gemacht und bin auf einige Begriffe wie Endscene, Hook, LUA Injection und die Funktion WowLuaDoString gestoßen. Jetzt meine Frage: Besteht...
DLL injection und AutoIT DLLCall
11/30/2010 - AutoIt - 4 Replies
Hallo, ich hab ein Problem was mit seit ein paar Stunden den Kopf zerbricht, vllt ist es auch einfach der falsche Ansatz. Ich hab mir eine DLL zum injizieren mit C++ geschrieben, durch Winject wird diese auch injiziert und die main Funktion durch die WINAPI DLLMain aufgerufen (einfach nur eine MsgBox). Jetzt besteht meine Frage / Problem darin, kann ich mit AutoIt die restlichen Funktionen auch aufrufen (durch DLLCall) oder soll man dass auch lieber mit C++ realisieren. (andere...



All times are GMT +2. The time now is 02:42.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.