C++

Ich weis nicht ob dein Problem noch aktuell ist, aber du könntest es so versuchen:

Code:
[B][COLOR=#800080]#include[/COLOR][/B] <iostream>
[COLOR=#800080][B]#include[/B][/COLOR]  [COLOR=#0000ff]"windows.h"[/COLOR]
[B][COLOR=#800080]#include[/COLOR][/B] <string>

[COLOR=#800080][B]using namespace[/B][/COLOR] std;

[COLOR=#800080][B]int[/B][/COLOR] main ([COLOR=#800080][B]int[/B][/COLOR] argc, [COLOR=#800080][B]char[/B][/COLOR] *argv[]){
    STARTUPINFO si, si2;
    PROCESS_INFORMATION pi, pi2;
    
    memset(&si, 0, [B][COLOR=#800080]sizeof[/COLOR][/B](si));
    si.cb = [COLOR=#800080][B]sizeof[/B][/COLOR](STARTUPINFO); [COLOR=#00cc66]//sizeof(si);[/COLOR]

    ZeroMemory( &pi, [B]sizeof[/B](pi) );
    
    CreateProcess([COLOR=#800080][B]NULL[/B][/COLOR],
        [COLOR=#0000ff]"ENBInjector.exe"[/COLOR]  ,             [COLOR=#00cc66]// Command line.[/COLOR]
        [COLOR=#800080][B]NULL[/B][/COLOR],                             [COLOR=#00cc66]// Process handle not inheritable.[/COLOR]
        [B][COLOR=#800080]NULL[/COLOR][/B],                             [COLOR=#00cc66]// Thread handle not inheritable.[/COLOR]
        0,                                   [COLOR=#00cc66]// Set handle inheritance to FALSE.[/COLOR]
        CREATE_NO_WINDOW,                [COLOR=#00cc66]// ON VISTA/WIN7, THIS CREATES NO WINDOW[/COLOR]
        [COLOR=#800080][B]NULL[/B][/COLOR],                             [COLOR=#00cc66]// Use parent's environment block.[/COLOR]
        [B][COLOR=#800080]NULL[/COLOR][/B],                             [COLOR=#00cc66]// Use parent's starting directory.[/COLOR]
        &si,                              [COLOR=#00cc66]// Pointer to STARTUPINFO structure.[/COLOR]
        &pi );                            [COLOR=#00cc66]// Pointer to PROCESS_INFORMATION structure.[/COLOR]
    
    memset(&si2, 0, [COLOR=#800080][B]sizeof[/B][/COLOR](si2));
    si.cb = [B][COLOR=#800080]sizeof[/COLOR][/B](STARTUPINFO); [COLOR=#00cc66]//sizeof(si2);[/COLOR]

    ZeroMemory( &pi2, [B][COLOR=#800080]sizeof[/COLOR][/B](pi2) );
        
    CreateProcess([COLOR=#800080][B]NULL[/B][/COLOR],
        [COLOR=#0000ff]"skse_loader.exe"[/COLOR]  ,             [COLOR=#00cc66]// Command line.[/COLOR]
        [COLOR=#800080][B]NULL[/B][/COLOR],                             [COLOR=#00cc66]// Process handle not inheritable.[/COLOR]
        [COLOR=#800080][B]NULL[/B][/COLOR],                            [COLOR=#00cc66] // Thread handle not inheritable.[/COLOR]
        0,                                 [COLOR=#00cc66]// Set handle inheritance to FALSE.[/COLOR]
        CREATE_NO_WINDOW,              [COLOR=#00cc66]// ON VISTA/WIN7, THIS CREATES NO WINDOW[/COLOR]
        [B][COLOR=#800080]NULL[/COLOR][/B],                             [COLOR=#00cc66]// Use parent's environment block.[/COLOR]
        [B][COLOR=#800080]NULL[/COLOR][/B],                             [COLOR=#00cc66]// Use parent's starting directory.[/COLOR]
        &si2,                              [COLOR=#00cc66]// Pointer to STARTUPINFO structure.[/COLOR]
        &pi2 );                            [COLOR=#00cc66]// Pointer to PROCESS_INFORMATION structure.[/COLOR]
    
    WaitForSingleObject(pi.hProcess, 500);
    CloseHandle(pi.hThread);
    [B][COLOR=#800080]return[/COLOR][/B] 0;    
}

Ich hab das allerdings nicht ausprobiert; ich nutze den ENBInjector nicht.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: r4yn
Danke! Das funktioniert einwandfrei. Nur beendet sich danach der ENBInjector nicht, was aber ne Sache von einer Zeile ist :)
(Das war nämlich eigentlich der Sinn meiner Aktion: ENBInjector ohne ALT+TAB und ohne viel Aufwand beenden, da ich gelesen und z.T. auch beobachtet habe, dass der Injector auch nach dem Spielstart bis zu 20% der CPU belegen kann. Und ALT + TAB bei mir recht schnell zu Grafikfehlern führt :/)
Edit: Ich sehe ja gerade, dass dein Programm eigentlich ENB sogar schließen sollte o_O
 
Ich glaube das liegt daran, dass gewartet wird bis der ENBInjector fertig ist - was er natürlich werden wird. Probier mal das WaitForSingleObject(pi.hProcess, 500); durch Sleep(500); zu ersetzen.
 
Nope, geht nicht.
Ich habs jetzt so gemacht:
Code:
Sleep(500);
system("TASKKILL /IM ENBInjector.exe");
Ist zwar die Noobvariante, aber sie funktioniert^^.
 
Mach doch eine Windows-Anwendung mit Win API ohne fenster, die kannst du dann im Hintergrund laufen lassen und hast nicht die nervige Konsole.
 
Mach doch eine Windows-Anwendung mit Win API ohne fenster, die kannst du dann im Hintergrund laufen lassen und hast nicht die nervige Konsole.
Was sollte mich an einer Konsole stören, die nicht länger da ist als der ENBInjector selbst. Schließlich will ich Skyrim spielen und nicht, dass mein Desktop ordentlich aussieht :p

Edit: Aber Eldarie's Programm hat gelöst, dass der ENBInjector garnicht erkennt, dass Skyrim gestartet wird.
Edit: Und da ist ja auch keine Konsole, nur eben wenn man
Code:
[LEFT][COLOR=#000000]system("TASKKILL /IM ENBInjector.exe");
verwendet.[/COLOR][/LEFT]
 
Zuletzt bearbeitet: