句柄定义的地方和ShellExecute()函数的使用
句柄定义的地方:
<wtypes.h>头文件中
typedef void __RPC_FAR *HANDLE;
typedef void __RPC_FAR *HMODULE;
typedef void __RPC_FAR *HINSTANCE;
typedef void __RPC_FAR *HRGN;
typedef void __RPC_FAR *HTASK;
typedef void __RPC_FAR *HKEY;
typedef void __RPC_FAR *HDESK;
typedef void __RPC_FAR *HMF;
typedef void __RPC_FAR *HEMF;
typedef void __RPC_FAR *HPEN;
typedef void __RPC_FAR *HRSRC;
typedef void __RPC_FAR *HSTR;
typedef void __RPC_FAR *HWINSTA;
typedef void __RPC_FAR *HKL;
typedef void __RPC_FAR *HGDIOBJ;
=================================
DEMO CODE:
//hello1.cpp
#define STRICT
#include <windows.h>
#include <tchar.h>
#include <assert.h>
//封装2个[in]参数,后面用起来比较方便
const TCHAR szOperation[] = _T("open");
const TCHAR szAddress[] = _T("http://shanzy.cnblogs.com/");
//32位下面,第2个句柄始终为0,所以不传,但是参数原型还是要严格遵守的
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR lpCmd, int nShow)
{
HINSTANCE hRslt = ShellExecute(NULL, szOperation,szAddress,
NULL, NULL, SW_SHOWNORMAL);
assert( hRslt > (HINSTANCE) HINSTANCE_ERROR);
return 0;
}
对返回类型(值)进行assert()是非常重要的,能够及时发现错误