Hallo.
Hab mal eine Frage.
Ich habe eine Dll geschrieben, die ich natürlich wie jede andere auch, injekte.
Nun würd ich gerne eine WindowsFormAnwendung erstellen.
Also wenn die DLL attached wird, soll sich eine FormAnwendung öffnen die ich benutzen kann.
ist aber bei spielen etwas problematisch, je nachdem was du machen möchtest.
eventuell ist es eine schönere lösung deine dll mit einem externen programm von dir per pipe kommunizieren zu lassen.
@yihaa: same. Außerdem würde ein Dialog i.d.R. reichen
@Deluxe: same.
@Topic:
Es ist möglich. Man kann mittels WinApi einen .NET Host in einer nativen Dll erstellen.
Dieser ermöglicht es dann, .NET Code auszuführen.
Sprich du machst dir eine .NET Dll mit dem GUI und packst sie als Resource in die eigentliche native Dll.
Dort erstellst du erst die .NET Dll temporär, richtest den Host ein und führst das .NET Assembly aus.
Problem ohne externe Anwendung gelöst.
Zu Windows Forms INNERHALB von C++ (also C++/CLI) würde ich dir NICHT raten.
@yihaa: same. Außerdem würde ein Dialog i.d.R. reichen
@Deluxe: same.
@Topic:
Es ist möglich. Man kann mittels WinApi einen .NET Host in einer nativen Dll erstellen.
Dieser ermöglicht es dann, .NET Code auszuführen.
Sprich du machst dir eine .NET Dll mit dem GUI und packst sie als Resource in die eigentliche native Dll.
Dort erstellst du erst die .NET Dll temporär, richtest den Host ein und führst das .NET Assembly aus.
Problem ohne externe Anwendung gelöst.
Zu Windows Forms INNERHALB von C++ (also C++/CLI) würde ich dir NICHT raten.
Ist trotzdem der richtige weg, das GUI auslagern bringt mehr probleme als vorteile.
Ok. Hab mir das Beispiel von KD ans Herz genommen und bin auch damit zufrieden. Hab das Fenster so angepasst wie ich es will. Jetzt hab ich ein weiteres Problem. Wie könnt ich z.B eine Checkbox oder ein Button reinpacken?
Habe das jetz einfach mal aus meinen Testprogramm so gepostet, sollte auch klappen.
MfG
die button id würde ich eher mit LOWORD(wParam) prüfen, da HIWORD den state(?) beinhaltet
Code:
switch(uMsg)
{
case WM_CLOSE:
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case BUTTON_ID:
MessageBoxW(hWnd,L"d",L"y",0);
break;
}
}
default:
return DefWindowProcW(hWnd,uMsg,wParam,lParam);
}
so siehts etwa bei mir aus
edit: was den checkbox state angeht arbeite ich lieber mit variablen die ich umstelle und dann die checkbox änder, da mir BM_GETCHECK bisher nie die richtigen ergebnisse geliefert hat