Ĺadny brzuch
Witam.
Napisałem sobie mały programik (C++ Builder 6) automatyzujący włączanie i wyłączanie proxy w iexplorerze (zmiana w rejestrze). Z tym że, aby zmiana zadziałała muszę zamknąć wszystkie okna iexplorera, chciałbym taką funkcję wprowadzić do mojego programu. Gdzieś przeczytałem o zamykaniu programu, gdy znamy jego nazwę -ale to jest nieskuteczne - ponieważ iexplorer ma taką nazwę jaki jest topik strony. Przydałaby mi się instrukcja zamykająca proces IEXPLORE.EXE -może się ktoś orientuje jak to zrealizować ?
elo ;)
no wiec mozna to zrobic tak://na poczatku tam gdzie pliki naglowkowe #include "psapi.h" //... //obsluga klikniecia przycisku kill_iexpore :] void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD aProcesses[1024], cbNeeded, cProcesses; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; cProcesses = cbNeeded / sizeof(DWORD); //ilosc procesow do przejrzenia for (unsigned int i=0; i<cProcesses; i++) { char szProcessName[MAX_PATH] = "unknown"; HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i] ); if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); if(strcmpi("IEXPLORE.EXE",szProcessName)==0) { CloseHandle( hProcess ); hProcess = OpenProcess(PROCESS_TERMINATE , FALSE, aProcesses[i]); TerminateProcess (hProcess,0); } } else continue; } else continue; CloseHandle( hProcess ); } }
musisz jeszcze dodac do projektu biblioteke psapi.lib
[menu project->add to project->plik typu lib->katalog c++buildera->lib->psdk->psapi.lib->ok->F9->click button->be happy :chytry:]
pozdrawiam
pepsi^no1
Wielkie dzięki pepsi. Teraz to mój programik działa jak należy. Wcześniej można powiedzieć, że był w 50% funkcjonalny. Sam bym nigdy nie wpadł na to rozwiązanie a w mojej skromnej literaturze o C++ niewiele znalazłem.
PS. Na twoim miejscu zastanowił bym się nad zmiana nicka np. na Expert, ewentualnie pepsi_expert :). Jeszcze raz thanks.
... problemy są po to by je rozwiązywać, ale rozwiązanie stanowi czasem problem ...
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Napisałem sobie mały programik (C++ Builder 6) automatyzujący włączanie i wyłączanie proxy w iexplorerze (zmiana w rejestrze). Z tym że, aby zmiana zadziałała muszę zamknąć wszystkie okna iexplorera, chciałbym taką funkcję wprowadzić do mojego programu. Gdzieś przeczytałem o zamykaniu programu, gdy znamy jego nazwę -ale to jest nieskuteczne - ponieważ iexplorer ma taką nazwę jaki jest topik strony. Przydałaby mi się instrukcja zamykająca proces IEXPLORE.EXE -może się ktoś orientuje jak to zrealizować ?
elo ;)
no wiec mozna to zrobic tak://na poczatku tam gdzie pliki naglowkowe #include "psapi.h" //... //obsluga klikniecia przycisku kill_iexpore :] void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD aProcesses[1024], cbNeeded, cProcesses; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return; cProcesses = cbNeeded / sizeof(DWORD); //ilosc procesow do przejrzenia for (unsigned int i=0; i<cProcesses; i++) { char szProcessName[MAX_PATH] = "unknown"; HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i] ); if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); if(strcmpi("IEXPLORE.EXE",szProcessName)==0) { CloseHandle( hProcess ); hProcess = OpenProcess(PROCESS_TERMINATE , FALSE, aProcesses[i]); TerminateProcess (hProcess,0); } } else continue; } else continue; CloseHandle( hProcess ); } }
musisz jeszcze dodac do projektu biblioteke psapi.lib
[menu project->add to project->plik typu lib->katalog c++buildera->lib->psdk->psapi.lib->ok->F9->click button->be happy :chytry:]
pozdrawiam
pepsi^no1
Wielkie dzięki pepsi. Teraz to mój programik działa jak należy. Wcześniej można powiedzieć, że był w 50% funkcjonalny. Sam bym nigdy nie wpadł na to rozwiązanie a w mojej skromnej literaturze o C++ niewiele znalazłem.
PS. Na twoim miejscu zastanowił bym się nad zmiana nicka np. na Expert, ewentualnie pepsi_expert :). Jeszcze raz thanks.
... problemy są po to by je rozwiązywać, ale rozwiązanie stanowi czasem problem ...