亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? start.cpp

?? 大量windows shell編程例子
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Start.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "start.h"
#include "resource.h"

HINSTANCE g_hInstance;
BOOL g_bInstalled = FALSE;
HBITMAP g_hbmStart = NULL;
BOOL g_bSubclassed = FALSE;
WNDPROC g_pfnStartProc = NULL;
HWND g_hwndTip = NULL;
TOOLINFO g_ti;
BOOL g_bAlreadyDrawn = FALSE;
BOOL g_bFirstTime = TRUE;

BOOL APIENTRY DllMain( HINSTANCE hInstance, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
   g_hInstance = hInstance;
   return TRUE;
}

/*---------------------------------------------------------------------------*/
// DllGetClassObject
// Main function for a COM in-proc object like this
/*---------------------------------------------------------------------------*/
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
   InstallHandler();
   return CLASS_E_CLASSNOTAVAILABLE;
}


/*---------------------------------------------------------------------------*/
// DllCanUnloadNow
// Confirm the unload for a COM library
/*---------------------------------------------------------------------------*/
STDAPI DllCanUnloadNow()
{
   return (g_bInstalled ? S_FALSE : S_OK);
}


STDAPI DllRegisterServer()
{
   TCHAR szSubKey[MAX_PATH] = {0};
   TCHAR szCLSID[MAX_PATH] = {0};
   TCHAR szModule[MAX_PATH] = {0};
   HKEY hKey;
   DWORD dwDisp;

   // Set the CLSID
   lstrcpy(szCLSID, __TEXT("{20051998-0019-0005-1998-000000000000}"));

   // Get the module name
   GetModuleFileName(g_hInstance, szModule, MAX_PATH);

   // HKCR: CLSID\{...}
   wsprintf(szSubKey, __TEXT("CLSID\\%s"), szCLSID);
   LRESULT lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, szSubKey, 0, NULL,
                 REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDisp);
   if(lResult == NOERROR)
   {
      TCHAR szData[MAX_PATH] = {0};
      wsprintf(szData, __TEXT("Start Button"), szModule);
      lResult = RegSetValueEx(hKey, NULL, 0, REG_SZ,
                    reinterpret_cast<LPBYTE>(szData), lstrlen(szData) + 1);
      RegCloseKey(hKey);
   }

   // HKCR: CLSID\{...}\InProcServer32
   wsprintf(szSubKey, __TEXT("CLSID\\%s\\InProcServer32"), szCLSID);
   lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, szSubKey, 0, NULL,
                 REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDisp);
   if(lResult == NOERROR)
   {
      lResult = RegSetValueEx(hKey, NULL, 0, REG_SZ,
                reinterpret_cast<LPBYTE>(szModule), lstrlen(szModule) + 1);
      TCHAR szData[MAX_PATH] = {0};
      lstrcpy(szData, __TEXT("Apartment"));
      lResult = RegSetValueEx(hKey, __TEXT("ThreadingModel"), 0, REG_SZ,
                    reinterpret_cast<LPBYTE>(szData), lstrlen(szData) + 1);
      RegCloseKey(hKey);
   }

   return S_OK;
}


STDAPI DllUnregisterServer()
{
   TCHAR szSubKey[MAX_PATH] = {0};
   TCHAR szCLSID[MAX_PATH] = {0};
   TCHAR szModule[MAX_PATH] = {0};
   HKEY hKey;
   DWORD dwDisp;

   // Set the CLSID
   lstrcpy(szCLSID, __TEXT("{20051998-0019-0005-1998-000000000000}"));

   // Open HKCR
   LRESULT lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT, "", 0, NULL,
                 REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, &dwDisp);
   if(lResult == NOERROR)
   {
      wsprintf(szSubKey, __TEXT("CLSID\\%s\\InProcServer32"), szCLSID);
      RegDeleteKey(hKey, szSubKey);
      wsprintf(szSubKey, __TEXT("CLSID\\%s"), szCLSID);
      RegDeleteKey(hKey, szSubKey);
      RegCloseKey(hKey);
   }

   return S_OK;
}


/*-------------------------------------------------------*/
// InstallHandler
// Replace the Start button and install the hooks
/*-------------------------------------------------------*/
void InstallHandler()
{
   if(g_bInstalled)
   {
      int irc = MessageBox(HWND_DESKTOP, 
          __TEXT("The extension is installed. Would you like to uninstall?"),
          __TEXT("Start"), MB_ICONQUESTION | MB_YESNO | MB_SETFOREGROUND);

      if(irc == IDYES)
         UninstallHandler();
      return;
   }

   // Remember whether the handler is installed
   g_bInstalled = TRUE;

   // Set a new Start button
   SetNewStartButton(TRUE);
}


void UninstallHandler()
{
   // Restore the Start settings
   SetNewStartButton(FALSE);

   // The handler is now uninstalled
   g_bInstalled = FALSE;

   // Restore the old tooltip text
   g_ti.lpszText = __TEXT("Click here to begin"); 
   SendMessage(g_hwndTip, TTM_UPDATETIPTEXT, 0, reinterpret_cast<LPARAM>(&g_ti));
}


HBITMAP NewStartBitmap(HWND hwndStart, BOOL fNew)
{
   if(!fNew)
   {
      if(g_hbmStart)
         SendMessage(hwndStart, BM_SETIMAGE, IMAGE_BITMAP, reinterpret_cast<LPARAM>(g_hbmStart));
  
      // Refresh the button to reflect the change
      SetWindowPos(hwndStart, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOMOVE | SWP_DRAWFRAME);
      return NULL;
   }
	
   // Save the current bitmap
   g_hbmStart = reinterpret_cast<HBITMAP>(SendMessage(hwndStart, BM_GETIMAGE, IMAGE_BITMAP, 0));

   // Load and set the new bitmap
   HBITMAP hbm = reinterpret_cast<HBITMAP>(LoadImage(g_hInstance, MAKEINTRESOURCE(IDB_NEWSTART), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE));
   SendMessage(hwndStart, BM_SETIMAGE, IMAGE_BITMAP, reinterpret_cast<LPARAM>(hbm));

   // Refresh the button to reflect the change
   SetWindowPos(hwndStart, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOMOVE | SWP_DRAWFRAME);
   return g_hbmStart;
}

/*-------------------------------------------------------*/
// SetNewStartButton
// Replace/Restore the bitmap for the Start button
/*-------------------------------------------------------*/
void SetNewStartButton(BOOL fNew)
{
   // Get the handle to the Start button
   HWND hwndTray = FindWindowEx(NULL, NULL, "Shell_TrayWnd", NULL);
   HWND hwndStart = FindWindowEx(hwndTray, NULL, "Button", NULL); 

   // Change the bitmap
   g_hbmStart = NewStartBitmap(hwndStart, fNew);

   // Replace the tooltip text
   RemoveTooltip(hwndStart);

   // Subclass the button
   if(fNew)
   {
      if(!g_bSubclassed)
      {
         g_pfnStartProc = SubclassWindow(hwndStart, NewStartProc);
         g_bSubclassed = TRUE;
      }
   }
   else
   {
      if(g_pfnStartProc != NULL)
         SubclassWindow(hwndStart, g_pfnStartProc);
      g_bSubclassed = FALSE;
   }
}

LRESULT CALLBACK NewStartProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
   switch(uMsg)
   {
   case WM_SETCURSOR:
      SetCursor(LoadCursor(g_hInstance, MAKEINTRESOURCE(IDC_HANDY)));
      return 0;
   case WM_MEASUREITEM:
      MeasureItem(HWND_DESKTOP, reinterpret_cast<LPMEASUREITEMSTRUCT>(lParam));
      break;
   case WM_DRAWITEM:
      DrawItem(reinterpret_cast<LPDRAWITEMSTRUCT>(lParam));
      break;
   case WM_CONTEXTMENU:
      return 0; 
   case BM_SETSTATE:
   case WM_LBUTTONDOWN:
	  {
         WNDCLASS wc;
         GetClassInfo(NULL, "Button", &wc);
         CallWindowProc(wc.lpfnWndProc, hwnd, BM_SETSTATE, TRUE, 0);

         STARTMENUPOS smp;
         GetStartMenuPosition(&smp);
         HMENU hmnuPopup = GetMenuHandle("c:\\myStartMenu");
         int iCmd = TrackPopupMenu(hmnuPopup,
                                 smp.uFlags | TPM_RETURNCMD | TPM_NONOTIFY,
                                 smp.ix, smp.iy, 0, hwnd, NULL);

         // Handle the user's mouse clicks
         HandleResults(hmnuPopup, iCmd);

         // Free memory
         DestroyMenu(hmnuPopup);

         CallWindowProc(wc.lpfnWndProc, hwnd, BM_SETSTATE, FALSE, 0);
         return 0;
	  }
   }

   return CallWindowProc(g_pfnStartProc, hwnd, uMsg, wParam, lParam);
}


void RemoveTooltip(HWND hwndStart)
{
   EnumThreadWindows(GetCurrentThreadId(), EnumThreadWndProc, reinterpret_cast<LPARAM>(hwndStart));
}


// This thread created just one tooltip window. All the windows that belong
//  to the thread are enumerated in order to find the tooltip. This
//  callback receives the handle of all the windows the thread created. The
//  lParam is the handle (hwndStart) of the Start button.
BOOL CALLBACK EnumThreadWndProc(HWND hwnd, LPARAM lParam)
{
   TCHAR szClass[MAX_PATH] = {0};
   GetClassName(hwnd, szClass, MAX_PATH);
   if(0 == lstrcmpi(szClass, TOOLTIPS_CLASS))
   {
      // Tooltip window found, so try to locate the tool
      int iNumOfTools = SendMessage(hwnd, TTM_GETTOOLCOUNT, 0, 0);
      for(int i = 0 ; i < iNumOfTools ; i++)
      {
         // Get information about the ith tool
         TOOLINFO ti;
         g_hwndTip = hwnd;
         ti.cbSize = sizeof(TOOLINFO);
         SendMessage(hwnd, TTM_ENUMTOOLS, i, reinterpret_cast<LPARAM>(&ti));
         if(ti.uId == static_cast<UINT>(lParam))
         {
            // Tool for the Start button found.
            CopyMemory(&g_ti, &ti, sizeof(TOOLINFO));
            ti.lpszText = __TEXT("Buy this book!");
            SendMessage(hwnd, TTM_UPDATETIPTEXT, 0, reinterpret_cast<LPARAM>(&ti));
         }
      }
      return FALSE;
   }
   return TRUE;
}


void GetStartMenuPosition(LPSTARTMENUPOS lpsmp)
{
   // Get the taskbar's edge and position
   APPBARDATA abd;
   abd.cbSize = sizeof(APPBARDATA);
   SHAppBarMessage(ABM_GETTASKBARPOS, &abd);

   switch(abd.uEdge)
   {
   case ABE_BOTTOM:
      lpsmp->ix = 0;
      lpsmp->iy = abd.rc.top;
      lpsmp->uFlags = TPM_LEFTALIGN | TPM_BOTTOMALIGN;
      break;

   case ABE_TOP:
      lpsmp->ix = 0;
      lpsmp->iy = abd.rc.bottom;
      lpsmp->uFlags = TPM_LEFTALIGN | TPM_TOPALIGN;
      break;

   case ABE_LEFT:
      lpsmp->ix = abd.rc.right;
      lpsmp->iy = 0;
      lpsmp->uFlags = TPM_LEFTALIGN | TPM_TOPALIGN;
      break;

   case ABE_RIGHT:
      lpsmp->ix = abd.rc.left;
      lpsmp->iy = 0;
      lpsmp->uFlags = TPM_RIGHTALIGN | TPM_TOPALIGN;
      break;
   }
}


HMENU GetMenuHandle(LPTSTR szPath)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本高清视频在线观看| 亚洲亚洲精品在线观看| 久久一区二区视频| 欧美成人一区二区| 日韩欧美视频一区| 精品av综合导航| 精品久久久久久久久久久久久久久| 91麻豆精品国产91久久久久久久久 | 日av在线不卡| 婷婷六月综合网| 日韩高清在线观看| 精一区二区三区| 国内久久精品视频| 成人网男人的天堂| 色久综合一二码| 欧美精品丝袜中出| 日韩精品最新网址| 国产视频一区二区在线观看| 亚洲国产精品精华液ab| 自拍偷拍欧美精品| 亚洲一区二区黄色| 免费久久99精品国产| 国产老肥熟一区二区三区| 国产成人综合在线| 99久久精品99国产精品| 欧美午夜精品理论片a级按摩| 欧美裸体bbwbbwbbw| 日韩美一区二区三区| 国产精品丝袜黑色高跟| 一区二区三区91| 丝袜a∨在线一区二区三区不卡| 麻豆精品一区二区| 成人亚洲一区二区一| 在线观看成人小视频| 日韩一级黄色大片| 国产欧美日韩视频一区二区| 亚洲乱码国产乱码精品精98午夜 | 欧美一区二区三区成人| 精品国产91亚洲一区二区三区婷婷| 久久久久久久久岛国免费| 国产精品色噜噜| 亚洲成人久久影院| 国产精品资源站在线| 色哟哟精品一区| 日韩欧美www| 亚洲人成网站色在线观看| 亚洲成人一区在线| 国产成人午夜电影网| 欧美午夜精品久久久久久孕妇| 欧美大片国产精品| 亚洲精品视频在线观看网站| 精品一区二区免费| 欧美性一级生活| 久久久久久久综合色一本| 亚洲美女电影在线| 国产一区二区三区高清播放| 日本精品一区二区三区四区的功能| 日韩精品一区二区三区四区 | 91在线你懂得| 日韩欧美一区二区三区在线| 亚洲激情自拍偷拍| 国产超碰在线一区| 日韩欧美亚洲国产精品字幕久久久| 亚洲欧美在线观看| 国产在线精品国自产拍免费| 欧美高清www午色夜在线视频| 日本一二三四高清不卡| 久久国产精品一区二区| 欧美少妇bbb| 国产精品伦理一区二区| 精品亚洲国产成人av制服丝袜| 在线观看中文字幕不卡| 国产精品久久久久久妇女6080| 久久电影网站中文字幕| 欧美日韩精品欧美日韩精品| 国产精品国模大尺度视频| 精品亚洲欧美一区| 欧美一级艳片视频免费观看| 亚洲综合视频在线观看| 成人av电影免费观看| 久久久夜色精品亚洲| 日本视频中文字幕一区二区三区| 欧美在线视频不卡| 亚洲区小说区图片区qvod| 东方aⅴ免费观看久久av| 欧美sm美女调教| 日韩成人dvd| 欧美日韩一区久久| 亚洲高清三级视频| 在线日韩一区二区| 一区二区三区日韩在线观看| 波多野结衣一区二区三区 | 国产精品无人区| 国产电影一区在线| 国产亚洲成av人在线观看导航| 国内成人精品2018免费看| 日韩一区二区影院| 久久99久久久欧美国产| 日韩精品在线看片z| 久久99这里只有精品| 日韩精品一区二区三区中文不卡 | 美国av一区二区| 91精品国产一区二区三区蜜臀| 五月婷婷激情综合| 欧美日韩国产bt| 日韩av一级电影| 日韩欧美亚洲国产精品字幕久久久| 另类小说综合欧美亚洲| 日韩精品中文字幕在线不卡尤物| 麻豆精品视频在线观看视频| 精品国产免费久久| 国产xxx精品视频大全| 国产精品污www在线观看| www.在线成人| 椎名由奈av一区二区三区| 色欧美88888久久久久久影院| 亚洲欧美日韩系列| 欧美日韩激情在线| 麻豆91在线观看| 国产亚洲精久久久久久| av亚洲精华国产精华精华| 亚洲欧美一区二区三区国产精品 | 欧美乱熟臀69xxxxxx| 青娱乐精品视频在线| 精品成人一区二区三区| 成人免费不卡视频| 一区二区三区高清在线| 亚洲欧美日韩成人高清在线一区| 色八戒一区二区三区| 亚洲电影在线播放| 欧美精品一区二区在线播放 | 欧美日韩国产综合久久| 奇米一区二区三区| 久久久久久免费| 一本一本久久a久久精品综合麻豆| 亚洲一二三四久久| 欧美成人三级在线| www.视频一区| 肉丝袜脚交视频一区二区| 久久久www免费人成精品| 色综合天天综合网国产成人综合天| 亚洲成人黄色影院| 久久奇米777| 欧美性色综合网| 国产综合久久久久久鬼色| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩在线电影| 国产成人午夜精品影院观看视频| 亚洲尤物在线视频观看| 亚洲精品一区二区在线观看| 一本大道久久a久久精二百| 美女www一区二区| 亚洲人成在线播放网站岛国 | 一区二区三区鲁丝不卡| 日韩免费高清av| 色婷婷亚洲婷婷| 国产一区二区三区免费播放| 亚洲午夜私人影院| 国产精品午夜春色av| 日韩一区二区在线观看| 成人av电影在线网| 老鸭窝一区二区久久精品| 亚洲精品久久嫩草网站秘色| 久久久久免费观看| 欧美三级乱人伦电影| 成人av网站免费| 久久国产精品色婷婷| 亚洲va国产va欧美va观看| 国产精品免费观看视频| 精品久久久影院| 欧美日韩免费一区二区三区 | 国产精品欧美极品| 欧美一级电影网站| 91久久精品一区二区二区| 国产成人免费9x9x人网站视频| 丝袜亚洲精品中文字幕一区| 亚洲柠檬福利资源导航| 国产欧美精品一区二区色综合| 欧美区一区二区三区| 色av成人天堂桃色av| 粉嫩aⅴ一区二区三区四区五区| 捆绑调教美女网站视频一区| 亚洲国产成人精品视频| 亚洲欧美色综合| 亚洲国产精品激情在线观看| 国产精品卡一卡二卡三| 国内精品视频一区二区三区八戒| 中文字幕视频一区| 欧美三级欧美一级| 在线观看一区二区精品视频| 99久久99久久免费精品蜜臀| 国产电影一区二区三区| 国产一区二区在线视频| 久久国产精品第一页| 午夜精品福利久久久| 一区二区三区91| 一区二区三区精品视频在线| 亚洲色图一区二区三区| 亚洲欧洲日产国码二区| 日本一区二区三区电影|