Windows Core学习 --- 进程(待续)

  1. 进程实例句柄
    extern "C" const IMAGE_DOS_HEADER __ImageBase;
    
    void DumpModule()
    {
    	// Get bass address of the main thread
    	HMODULE hModule = GetModuleHandle(NULL);
    	_tprintf(TEXT("GetModuleHandle(NULL) = 0x%x\r\n"), hModule);
    
    	_tprintf(TEXT("__ImageBase = 0x%x\r\n"), (HINSTANCE)&__ImageBase);
    
    	hModule = NULL;
    	GetModuleHandleEx(
    		GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
    		(PCTSTR)DumpModule,
    		&hModule);
    	_tprintf(TEXT("GetModuleHandleEx = 0x%x\r\n"), hModule);
    
    	// Get module full file path
    	TCHAR str[256];
    	GetModuleFileName(hModule, str, sizeof(str));
    	_tprintf(TEXT("ModuleFileName = %s\r\n"), str);
    }

  2. 进程命令行
    GetCommandLine
  3. 进程的环境变量
    void GetEnvVariable()
    {
    	// Get the whole environment settings
    	PTSTR pEnvBlock = GetEnvironmentStrings();
    
    	TCHAR szName[MAX_PATH];
    	TCHAR szValue[MAX_PATH];
    	PTSTR pszCurrent = pEnvBlock;
    	HRESULT hr = S_OK;
    	PCTSTR pszPos = NULL;
    	int current = 0;
    
    	while(pszCurrent != NULL)
    	{
    		/* Skip meaningless strings like: 
    			"=::=::=\"
    		*/
    		if(*pszCurrent != TEXT('='))
    		{
    			// Look for "=" separator
    			pszPos = _tcschr(pszCurrent, TEXT('='));
    			++pszPos;
    
    			// Get the environment name
    			size_t cbNameLength = 
    				(size_t)pszPos - (size_t)pszCurrent - sizeof(TEXT('='));
    			hr = StringCbCopyN(szName, MAX_PATH, pszCurrent, cbNameLength);
    			if(FAILED(hr)) break;
    
    			// Get the environment value
    			hr = StringCbCopy(szValue, MAX_PATH, pszPos);
    			if(SUCCEEDED(hr))
    			{
    				_tprintf(TEXT("[%u] %s=%s\r\n"), current, szName, szValue);
    			}
    			else
    			{
    				break;
    			}
    		}
    
    		// Move to next environment variable
    		++current;
    		while(*pszCurrent++ != TEXT('\0')) ;
    
    		// Check if the last string
    		if(*pszCurrent == TEXT('\0')) break;
    	}
    
    	// Don't forget to free the memory
    	FreeEnvironmentStrings(pEnvBlock);
    }
    GetEnvironmentVariable
    ExpandEnvironmentStrings
    SetEnvironmentVariable
  4. 进程
    CreateProcess

转载于:https://my.oschina.net/freedomart/blog/129074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值