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 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 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 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 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 :) |
|
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. |
|
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 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;
|
|
DejaVu |
» 2016-02-22 17:33:39 Skoro się messagebox nie wyświetla to znaczy, że nie wchodzi Ci w Twój warunek. |
|
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. |
|
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ć. |
|
« 1 » |