C ++ Win 32 API:传递窗口SW_HIDE出现问题

时间:2011-09-07 01:18:36

标签: c++ c winapi

我试图隐藏计算机启动时的第3部分窗口。我使用以下代码。

#include<windows.h>
#include <stdio.h>
int main() {
    char windowName[500];
   HWND window = FindWindow("WindowClassAsReportedByWindowSpy++", NULL);

   //GetWindowText(window, windowName, 63);
   ShowWindow(firefox,SW_HIDE);

   getchar();
   return 0;
}

唯一的问题是窗口不会隐藏。关于为什么这不起作用/如何以不同方式实现这一点的任何想法。

2 个答案:

答案 0 :(得分:1)

您的程序很可能在创建目标窗口之前调用FindWindow,因此找不到它。

您需要睡觉并重试查找。

答案 1 :(得分:0)

您可能希望进行健全性检查以确保FindWindow不返回NULL。更好的是,在循环中调用FindWindow,直到它不返回NULL。

#include <windows.h>
#include <stdio.h>

static const wchar_t g_cszFirefoxClass[] = L"firefox";

int __cdecl wmain(__in int argc, __in_ecount_z_opt(argc) wchar_t* _wargv[], __in_z_opt __wenviron[])
{
  UNREFERENCED_PARAMETER(argc);
  UNREFERENCED_PARAMETER(_wargv);
  UNREFERENCED_PARAMETER(__wenviron);

  HWND hWnd;

  do {
    hWnd = FindWindow(g_cszFirefoxClass, NULL);
    Sleep(100);
  } while (hWnd == NULL);

  wprintf(L"[-] Firefox found! [HWND = 0x%X]\n", hWnd);

  if (ShowWindow(hWnd, SW_HIDE))
  {
    wprintf(L"[-] Successfully hid Firefox window!\n");
    return EXIT_SUCCESS;
  }
  else
  {
    fwprintf(stderr, L"[x] Failed to hide Firefox window..\n");
    return EXIT_FAILURE;
  }
}