Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zamykanie procesu WinApi

Ostatnio zmodyfikowano 2016-02-23 12:32
Autor Wiadomość
skuska
Temat założony przez niniejszego użytkownika
Zamykanie procesu WinApi
» 2016-02-22 13:37:10
Witam, mam pewien problem.
Posiadam program który wyświetla lista procesów i chciałbym dodać do niego możliwość zamykania procesów. Mam kod odpowiedzialny za zamykanie procesu
 
C/C++
void killProcessByName( const char * filename )
{
    HANDLE hSnapShot = CreateToolhelp32Snapshot( TH32CS_SNAPALL, NULL );
    PROCESSENTRY32 pEntry;
    pEntry.dwSize = sizeof( pEntry );
    BOOL hRes = Process32First( hSnapShot, & pEntry );
    while( hRes )
    {
        if( strcmp( pEntry.szExeFile, filename ) == 0 )
        {
            HANDLE hProcess = OpenProcess( PROCESS_TERMINATE, 0,
            ( DWORD ) pEntry.th32ProcessID );
            if( hProcess != NULL )
            {
                TerminateProcess( hProcess, 9 );
                CloseHandle( hProcess );
            }
        }
        hRes = Process32Next( hSnapShot, & pEntry );
    }
    CloseHandle( hSnapShot );
}

Po wykonaniu
C/C++
killProcessByName( nazwaprogramu.exe );
  program zamyka się bez problemu.
Chciałbym jednak zrobić to za pomocą Button i EditBox. W polu EditBox wpisuje nazwę programu i po kliknięciu Button program się zamyka. Stworzyłem EditBox oraz Button, ale nie mogę sobie z tym poradzić. Za utworzonym EditBox dałem
C/C++
SetWindowText( kontrolki, "Nazwa programu" );

DWORD dwdlugosc;
LPSTR Bufor;
dwdlugosc = GetWindowTextLength( kontrolki );
Bufor =( LPSTR ) GlobalAlloc( GPTR, dwdlugosc + 1 );
GetWindowText( kontrolki, Bufor, dwdlugosc + 1 );
W switch dałem
C/C++
case WM_COMMAND:
if(( HWND ) lParam == g_hPrzycisk )
     killProcessByName( Bufor );

break;

Próbowałem na wiele sposobów zrobić to żeby działało, lecz coś nie chcę działać(nic się nie dzieję).
Prosiłbym o pomoc :)
P-145164
DejaVu
» 2016-02-22 13:49:50
Zrób sobie najpierw aplikację, która po wciśnięciu przycisku wyświetli Ci messagebox z treścią tą, którą podałeś w polu tekstowym.

Twoje problemy raczej dotyczą podstaw obsługi kontrolek WinAPI, a nie wywołania określonej funkcji.
P-145165
skuska
Temat założony przez niniejszego użytkownika
» 2016-02-22 17:29:06
Wyszło coś takiego, co teoretycznie powinno działać ale nie wiem czemu się nie wyświetla
C/C++
case WM_COMMAND:
if(( HWND ) lParam == g_hPrzycisk )

{
    DWORD dlugosc = GetWindowTextLength( kontrolki );
    LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
    GetWindowText( kontrolki, Bufor, dlugosc + 1 );
    MessageBox( NULL, Bufor, "Informacja", MB_ICONINFORMATION );
    GlobalFree( Bufor );
}


break;
P-145174
DejaVu
» 2016-02-22 17:33:39
Skoro się messagebox nie wyświetla to znaczy, że nie wchodzi Ci w Twój warunek.
P-145176
skuska
Temat założony przez niniejszego użytkownika
» 2016-02-22 17:50:26
Wyświetla się MessageBox, tylko nie wyświetla się zawartość pola tekstowego.
P-145181
skuska
Temat założony przez niniejszego użytkownika
» 2016-02-23 12:32:41
Ma ktoś pomysł czemu to nie chce działać? MessageBox się wyświetla po kliknięciu na button, ale bez danych z pola tekstowego. Próbowałem robić podobnie w przypadku tej mojej funkcji, ale nie chcę działać.
P-145200
« 1 »
  Strona 1 z 1