Új hozzászólás Aktív témák

  • kampi_

    csendes tag

    Sziasztok!

    Az előző kérdéseimet már megoldottam, de most felmerült egy újabb. Szóval ugye egy olyan progit csinálok, ahol egy fájlban megadom a programok elérési útonalait, és a progi elindítja őket.Ha bezárom valamelyik általam megnyitott progit akkor pedig megnyitom újból. Most már minden szép és jó, viszont felmerült egy olyan probléma, hogy csa kettőt hajlandó megnyitni a program. Ez lehet a createprocess miatt? Itt a program is:

    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>

    #define Buf_Size 16*1024

    struct proc {
    char proc_name[300];
    int proc_id;
    };

    void file_exists(const char * filename);
    void filempty(char * filename);
    void createproc (char * str, int i, proc *);
    int count(char * file);

    struct proc proc_data[3];

    int main ()
    {
    int i;
    FILE *appfile;
    char tmp[Buf_Size];
    bool fute;

    int current,ret,line;

    current=0;
    line=0;

    file_exists("Application.txt");
    filempty("Application.txt");
    line = count("Application.txt");
    //struct proc proc_data[line];

    appfile = fopen("application.txt","r");

    while ( fgets(tmp, sizeof tmp, appfile) != NULL )
    {
    createproc(tmp,current,proc_data);
    current++;
    }//while

    fclose(appfile);

    i=0;
    while (1)
    {
    if (i==line) i=0;
    current++;
    Sleep(2000);
    HANDLE phandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, proc_data[i].proc_id);
    if (phandle==NULL) createproc(proc_data[i].proc_name,current,proc_data);
    CloseHandle(phandle);
    i++;
    }//while

    }//main

    void createproc (char * str, int i,proc *proc_data)
    {
    STARTUPINFO StartInfo;
    PROCESS_INFORMATION ProcInfo;
    memset(&ProcInfo, 0, sizeof(ProcInfo));
    memset(&StartInfo, 0 , sizeof(StartInfo));
    StartInfo.cb = sizeof(StartInfo);
    StartInfo.wShowWindow = SW_HIDE;
    CreateProcess(NULL, str, NULL, NULL, false, 0, NULL, NULL, &StartInfo, &ProcInfo);

    strcpy(proc_data[i].proc_name,str);
    proc_data[i].proc_id = ProcInfo.dwProcessId;

    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
    }//createproc

    Ha valaki lát benne hibát legyen szíves szóljon, mert én nem találom, és fontos lenne! Vagy ha esetleg más megoldást tudtok mondani, amivel 2-nél több alkalmazást tudok megnyitni (ha esetleg a createprocess lenne a ludas) akkor jelezzétek!

    Előre is köszönöm a segítséget!

    kampi

Új hozzászólás Aktív témák

Hirdetés