mobile系统下,隐藏任务栏小程序

说明:此程序是为了隐藏任务栏而开发的。此程序是在Windows Mobile 6 Professional SDK下开发的控制台程序。运行此程序,就会创建一个新的进程来运行驱动调试工具,此时任务栏开始隐藏,直到关闭驱动调试工具,任务栏自动恢复。

主要函数说明:

GetModuleFileName

功能:

获取一个已装载模板的完整路径名称

返回值:

Long,如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。会设置GetLastError

函数原型:

DWORDGetModuleFileName(

  HMODULE hModule,

  LPTSTR lpFilename,

  DWORD nSize

);

参数说明:

hModule HMODULE 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径。

lpFileName LPTSTR 是你存放返回的名字的内存块的指针,是一个输出参数

        nSizeDWORD ,装载到缓冲区lpFileName的最大值

头文件:

include Windows.h

 

 FindWindow

功能:

找到相应窗口的句柄

返回值:

如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。

如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。

函数原型:

HWND FindWindow

  (

  LPCSTR lpClassName,

  LPCSTR lpWindowName

  );

参数说明:

lpClassName

指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。

如果该参数为null时,将会寻找任何与lpWindowName参数匹配的窗口。

lpWindowName

指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。

头文件:

winuser.h

EnableWindow

功能:

该函数允许/禁止指定的窗口或控件接受鼠标和键盘的输入,当输入被禁止时,窗口不响应鼠标和按键的输入,输入允许时,窗口接受所有的输入。

返回值:

如果窗口原来是被禁止的,返回值不为零;如果窗口原来不是被禁止的,返回值为零。若想获得更多的错误信息,可调用GetLastError函数。

函数原型:

BOOLEnableWindow(HWND hWnd,BOOL bEnable);

参数说明:

hWnd:被允许/禁止的窗口句柄。

bEnable:定义窗口是被允许,还是被禁止。若该参数为TRUE,则窗口被允许。若该参数为FALSE,则窗口被禁止。

ShowWindow

功能:

该函数设置指定窗口的显示状态。

返回值:

如果窗口当前可见,则返回值为非零。如果窗口当前被隐藏,则返回值为零。

函数原型:

BOOLShowWindow(HWNDhWnd, int nCmdShow);

参数说明:

hWnd:指窗口句柄。

nCmdShow:指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一:

SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。

SW_HIDE:隐藏窗口并激活其他窗口。

SW_MAXIMIZE:最大化指定的窗口。

SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。

CreateProcess

功能:

创建一个进程

返回值:

如果函数执行成功,返回非零值。

如果函数执行失败,返回零,可以使用GetLastError函数获得错误的附加信息。

函数原型:

BOOL CreateProcess

         (

         LPCTSTR lpApplicationName,

         LPTSTR lpCommandLine,

         LPSECURITY_ATTRIBUTES lpProcessAttributes。

         LPSECURITY_ATTRIBUTES lpThreadAttributes,

         BOOL bInheritHandles,

         DWORD dwCreationFlags,

         LPVOID lpEnvironment,

         LPCTSTR lpCurrentDirectory,

         LPSTARTUPINFO lpStartupInfo,

         LPPROCESS_INFORMATION lpProcessInformation

         );

参数说明:

lpApplicationName:

指向一个NULL结尾的、用来指定可执行模块的字符串。

这个字符串可以是可执行模块的绝对路径,也可以是相对路径,在后一种情况下,函数使用当前驱动器和目录建立可执行模块的路径。

这个参数可以被设为NULL,在这种情况下,可执行模块的名字必须处于 lpCommandLine 参数的最前面并由空格符与后面的字符分开。

lpCommandLine:

指向一个NULL结尾的、用来指定要运行的命令行。

这个参数可以为空,那么函数将使用参数指定的字符串当作要运行的程序的命令行。

lpProcessInformation:

指向一个用来接收新进程的识别信息的PROCESS_INFORMATION结构体。

其他参数为默认值,ce不支持。

WaitForSingleObject

函数原型:

DWORDWaitForSingleObject(

  HANDLE hHandle,

  DWORD dwMilliseconds

  );

参数说明:

hHandle [in]对象句柄。可以指定一系列的对象,如Event、Job、Memory resource notification、Mutex、Process、Semaphore、Thread、Waitable timer等。

当等待仍在挂起状态时,句柄被关闭,那么函数行为是未定义的。该句柄必须具有 SYNCHRONIZE 访问权限。

dwMilliseconds [in]定时时间间隔,单位为milliseconds(毫秒).如果指定一个非零值,函数处于等待状态直到hHandle 标记的对象被触发,或者时间到了。如果dwMilliseconds 为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwMilliseconds 为INFINITE,对象被触发信号后,函数才会返回。

返回值:

执行成功,返回值指示出引发函数返回的事件

 程序流程图:

mobile系统下,隐藏任务栏小程序_第1张图片

代码:

#include<windows.h>

#include<winuser.h>

int_tmain(intargc, _TCHAR* argv[])

{

 

 

    HWNDhWnd;

    DWORDdwLen;

    PROCESS_INFORMATIONpi;

    TCHARszPath[MAX_PATH];

 

    dwLen= GetModuleFileName(NULL, szPath, MAX_PATH);//获取当前模块目录

    if (!dwLen)

    {

       return 0;

    }

 

    while (szPath[--dwLen] != _T('\\'))

    {

       szPath[dwLen] = _T('\0');

    }       

    wcscat(szPath, _T("DM.exe"));//调试工具的可执行文件

 

    hWnd= FindWindow(_T("HHTaskBar"), NULL);//找到任务栏句柄

    if (hWnd)

    {

       EnableWindow(hWnd, FALSE);//隐藏任务栏

       ShowWindow(hWnd, SW_HIDE);

    }

 

    if(CreateProcess(szPath,NULL, NULL,0, FALSE, 0, NULL,NULL, NULL,&pi))

    {

       WaitForSingleObject(pi.hProcess, INFINITE);//无线等待,直到调试工具关闭

       CloseHandle(pi.hThread);

       CloseHandle(pi.hProcess);

    }

 

    EnableWindow(hWnd, TRUE);//显示任务栏

    ShowWindow(hWnd, SW_SHOW);

    return 0;

}


你可能感兴趣的:(Semaphore,null,mobile,Path,工具,任务)