详细说说我的目的:我想自己的机子的QQ 自己独用或者相关的程序 能够不让他人使用,做一个使用验证的小程序,想在用户单击快捷方式后即程序运行前,弹出验证窗口,不知思路如何,望指教~~

解决方案 »

  1.   

    在你的程序里用定时器 FindWindow 检测QQ是否运行如果是,就先隐藏跳出验证窗口
      

  2.   

    1
    你的程序要一直运行,不过应该不会占很多的资源。
    如何判断一个程序是否运行着
    -------
    HWND hwnd = FindWindowEx(NULL, NULL, "目标标题", NULL);
      

  3.   

    用钩子巴,用来监视所有应用程序的启动和运行。
    WS_SHELL的HSHELL_WINDOWACTIVATED就是用来监视目的程序的启动的。只有你运行QQ的时候不阻止,其他人运行,一旦发现就WM_CLOSE掉。下面是钩子的代码,关于阻止,你自己再写点东东就可以了
    //头文件
    #ifndef EXEHOOKAPI
    #define EXEHOOKAPI __declspec(dllimport)
    #endif
    #define USER_MSG WM_USER+1
    #define UC_APPSTART 0x80000001
    #define UC_APPDESTROY 0x80000002EXEHOOKAPI BOOL WINAPI SetHook(HWND hExe);//cpp文件
    #include <windows.h>
    #define EXEHOOKAPI __declspec(dllexport)
    #include "ExeHook.h"#pragma data_seg("shared")
    HHOOK g_hProc =NULL;
    HWND g_hForm = NULL;
    #pragma data_seg()
    #pragma comment(linker, "/section:shared,rws")
    // DLL&frac34;&auml;±ú
    HINSTANCE g_hInstDLL = NULL;
    //LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam);
    LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    switch(nCode)
    {
    case HSHELL_WINDOWCREATED:
    PostMessage(g_hForm,USER_MSG,UC_APPSTART,LPARAM(wParam));
    break;
    case HSHELL_WINDOWDESTROYED:
    PostMessage(g_hForm,USER_MSG,UC_APPDESTROY,LPARAM(wParam));
    break;
    }
    return CallNextHookEx(g_hProc, nCode, wParam, lParam);
    }BOOL WINAPI SetHook(HWND hwndExe)
    {
    BOOL bRet;
    if(hwndExe)
    {
    g_hForm=hwndExe;
    g_hProc=SetWindowsHookEx(WH_SHELL, (HOOKPROC) HookedShellProc, g_hInstDLL, 0); bRet = (g_hProc!=NULL);
    }
    else
    {
    bRet=UnhookWindowsHookEx(g_hProc);
    g_hProc=NULL;
    g_hForm=NULL;
    }
    return bRet;
    }BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
      if (fdwReason == DLL_PROCESS_ATTACH)
        g_hInstDLL = hinstDLL;
      return TRUE;
    }