Shown below is coding for a simple C++ application that closes Internet Explorer. This application works perfectly in Windows 2000, although when run in a Windows 95/98 environment, two error messages show and the EXE does not run at all.
These error messages are:
- 'The PSAPI.DLL file is linked to missing export NTDLL.DLL:NtAllocateVirtualMemory.'
- '{Directory path where this file is located}\closeexplorer.exe
A device attached to the system is not functioning.'
How can this coding be altered so that this Application can run in Windows 95/98 as well as Windows 2000?
Please can someone help!
================================================== ===========
Code:// - Coding for the close IE/Netscape instances solution - /////////////////////////////////////// #include "stdafx.h" #include "psapi.h" #pragma comment(lib,"psapi.lib") char *g_sAppName; boolean g_bVerbose; boolean KillProcess( DWORD processID ) { char szProcessName[MAX_PATH] = "unknown"; // Get a handle to the process. HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, processID ); boolean retval = false; // Get the process name. if ( hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) ); } // Print the process name and identifier. //Need to // _strlwr(szProcessName); if (!strcmp(szProcessName,"explorer.exe") || // Copy and paste the following line with anything else that needs killing // !strcmp(szProcessName,"netscape.exe") || // change whatever is in the quotes !strcmp(szProcessName,"iexplore.exe")) { TerminateProcess(hProcess,0); } CloseHandle( hProcess ); } return retval; } int main() { DWORD aProcesses[1024], cbNeeded, cProcesses; unsigned int i; int killCount=0; if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded )) return 0; // Get the list of process identifiers. // Calculate how many process identifiers were returned. cProcesses = cbNeeded / sizeof(DWORD); // Print the name and process identifier for each process. for ( i = 0; i < cProcesses; i++ ) if (KillProcess( aProcesses[i] )) { killCount++; } return killCount; } //Just add the Netscape module name and you have it!



LinkBack URL
About LinkBacks


