|
@@ -67,6 +67,8 @@ BEGIN_MESSAGE_MAP(CInjectDLLDlg, CDialog)
|
|
|
ON_BN_CLICKED(BTN_INJECT, &CInjectDLLDlg::OnBnClickedInject)
|
|
|
ON_BN_CLICKED(BTN_EJECT, &CInjectDLLDlg::OnBnClickedEject)
|
|
|
ON_BN_CLICKED(BTN_REFLESH, &CInjectDLLDlg::OnBnClickedReflesh)
|
|
|
+ ON_BN_CLICKED(BTN_HIDE_WND, &CInjectDLLDlg::OnBnClickedHideWnd)
|
|
|
+ ON_BN_CLICKED(BTN_SHOW_WND, &CInjectDLLDlg::OnBnClickedShowWnd)
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
@@ -230,3 +232,73 @@ void CInjectDLLDlg::OnBnClickedReflesh()
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
InitCommbox();
|
|
|
}
|
|
|
+
|
|
|
+BOOL ShowInTaskbar(HWND hWnd, BOOL bShow)
|
|
|
+{
|
|
|
+ HRESULT hr;
|
|
|
+ ITaskbarList* pTaskbarList;
|
|
|
+ hr = CoCreateInstance( CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER,
|
|
|
+ IID_ITaskbarList, (void**)&pTaskbarList );
|
|
|
+ if(SUCCEEDED(hr))
|
|
|
+ {
|
|
|
+ pTaskbarList->HrInit();
|
|
|
+ if(bShow)
|
|
|
+ pTaskbarList->AddTab(hWnd);
|
|
|
+ else
|
|
|
+ pTaskbarList->DeleteTab(hWnd);
|
|
|
+ pTaskbarList->Release();
|
|
|
+ return TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ return FALSE;
|
|
|
+}
|
|
|
+
|
|
|
+HWND g_hCurrentProWnd = NULL;
|
|
|
+HWND g_hCurrentProWnd2 = NULL;
|
|
|
+void CInjectDLLDlg::OnBnClickedHideWnd()
|
|
|
+{
|
|
|
+ // TODO: 在此添加控件通知处理程序代码
|
|
|
+ INT nCurSel = m_cbProcess.GetCurSel();
|
|
|
+ if ( nCurSel == CB_ERR )
|
|
|
+ {
|
|
|
+ MessageBox(_T("请选择要隐藏窗口的进程"), _T("提醒"), MB_ICONWARNING);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ ProInfo *ptr = (ProInfo*)m_cbProcess.GetItemDataPtr(nCurSel);
|
|
|
+ if ( ptr )
|
|
|
+ {
|
|
|
+ g_hCurrentProWnd = GetProcessMainWnd(ptr->dwProId, _T("Demo"));
|
|
|
+ //g_hCurrentProWnd = GetProcessMainWnd(ptr->dwProId, NULL);
|
|
|
+ if ( g_hCurrentProWnd )
|
|
|
+ {//(TPV 2021/09/29) UHD Series OGC Tool V2.21.1.3
|
|
|
+ // Demo是多窗口程序,Demo是最外层的影子窗口,Spy++无法直接获取;
|
|
|
+ g_hCurrentProWnd2 = GetProcessMainWnd(ptr->dwProId, _T("(TPV 2021/09/29) UHD Series OGC Tool V2.21.1.3"));
|
|
|
+ ::ShowWindow(g_hCurrentProWnd2, SW_HIDE);
|
|
|
+ ::ShowWindow(g_hCurrentProWnd, SW_HIDE);
|
|
|
+ //ShowInTaskbar(g_hCurrentProWnd, FALSE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void CInjectDLLDlg::OnBnClickedShowWnd()
|
|
|
+{
|
|
|
+ // TODO: 在此添加控件通知处理程序代码
|
|
|
+ INT nCurSel = m_cbProcess.GetCurSel();
|
|
|
+ if ( nCurSel == CB_ERR )
|
|
|
+ {
|
|
|
+ MessageBox(_T("请选择要显示窗口的进程"), _T("提醒"), MB_ICONWARNING);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ ProInfo *ptr = (ProInfo*)m_cbProcess.GetItemDataPtr(nCurSel);
|
|
|
+ if ( ptr )
|
|
|
+ {
|
|
|
+ if ( g_hCurrentProWnd )
|
|
|
+ {
|
|
|
+ ::ShowWindow(g_hCurrentProWnd, SW_SHOW);
|
|
|
+ ::ShowWindow(g_hCurrentProWnd2, SW_SHOW);
|
|
|
+ //ShowInTaskbar(g_hCurrentProWnd, TRUE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|