(求助总是强大的P版)如何禁止某程序托盘图标闪烁(已解决,但分类里没有已解决。)
本帖最后由 gzh888666 于 2010-11-27 00:44 编辑论坛里看到P版的可以禁止程序弹窗的代码,很是牛X,那么有的程序托盘图标闪烁,是否可以禁止呢?高手指点! 自己顶一下,希望P版看到! 截取目标进程的Shell32.Shell_NotifyIcon函数,如果截取到 函数的第一个参数为1,表示目标进程正要修改托盘图标的状态,立刻返回APIHOOK_Flags_Call_Abort阻止调用就行了。
你既然已经看到了那个阻止创建窗口的帖子,那你完全可以独立解决这个问题,比着葫芦画瓢就是了,先把你的代码贴上来吧。- -|||
Shell32.Shell_NotifyIcon函数参考:http://msdn.microsoft.com/en-us/library/bb762159(VS.85).aspx 终于等到P版了,其实没看懂!关键是其中的几个自定义函数没搞明白{:face (301):} 希望P版帮我先把禁止GameClient.exe托盘闪动的代码写一下,偶真的想学习!#include <RTApiHook32.au3>
#include <SysTray_UDF.au3>
$st_process="hf.exe"
$tbxs=0
_SysTrayIconVisible($tbxs, _SysTrayIconIndex($st_process))
RunWait("GameClient.exe", @ScriptDir)
ProcessClose("hf.exe")
$hProcess = _RTOpenProcess("GameClient.exe")
$hCallBack = DllCallBackRegister("_CreateWindowCallBack", "dword", "handle;ptr")
$pCallBack = DllCallBackGetPtr($hCallBack)
$pCreateWindowExW = _RTGetProcAddress("User32.dll", "CreateWindowExW")
$tCreateWindowExW = _RTApiHookEx($hProcess, $pCreateWindowExW, 12, $pCallBack, $APIHOOK_Flags_Default)
OnAutoItExitRegister("_Restore")
While 1
Sleep(100)
WEnd
Func _Restore()
_RTApiUnhook($hProcess, $pCreateWindowExW, DllStructGetData($tCreateWindowExW, "Entrypoint"))
DllCallBackFree($hCallBack)
EndFunc ;==>_Restore
Func _CreateWindowCallBack($hProcess, $pCallInfo)
Local $pClassName = _RTApiHookReadParam($hProcess, $pCallInfo, 2)
Local $sClassName = _RTReadProcessMemory($hProcess, $pClassName, "", 1024, "wstr")
; If ($sClassName = "XXXX") Then
_RTApiHookSetRetVal($hProcess, $pCallInfo, 0)
_RTApiHookSetError($hProcess, $pCallInfo, 1407)
Return $APIHOOK_Flags_Call_Abort
; EndIf
EndFunc ;==>_CreateWinowCallBack
#NoTrayIcon
#include <RTApiHook32.au3>
$iPid = ProcessExists("QQ.exe")
$hProcess = _RTOpenProcess($iPid)
$pShell_NotifyIcon= _RTGetProcAddress("Shell32.dll", "Shell_NotifyIcon")
$pShell_NotifyIconA = _RTGetProcAddress("Shell32.dll", "Shell_NotifyIconA")
$pShell_NotifyIconW = _RTGetProcAddress("Shell32.dll", "Shell_NotifyIconW")
$hCallBack = DllCallBackRegister("_Shell_NotifyIcon_CallBack", "dword", "handle;ptr")
$pCallBack = DllCallBackGetPtr($hCallBack)
$tShell_NotifyIcon= _RTApiHookEx($hProcess, $pShell_NotifyIcon,2, $pCallBack)
$tShell_NotifyIconA = _RTApiHookEx($hProcess, $pShell_NotifyIconA, 2, $pCallBack)
$tShell_NotifyIconW = _RTApiHookEx($hProcess, $pShell_NotifyIconW, 2, $pCallBack)
While _RTWaitForObject($hProcess, 1)
WEnd
DllCallBackFree($hCallBack)
Func _Shell_NotifyIcon_CallBack($hProcess, $pCallInfo)
If (_RTApiHookReadParam($hProcess, $pCallInfo, 1, "dword") = 1) Then
Return $APIHOOK_Flags_Call_Abort
EndIf
EndFunc ;==>_Shell_NotifyIcon_CallBack 呵呵!我也看看{:1_413:} 本帖最后由 gzh888666 于 2010-11-27 00:43 编辑
测试成功!P版果然强大,谢谢P老大了!分类里没有已解决呀!怎么移过去呢? 楼主您好 您能给个 P版的可以禁止程序弹窗的代码 的帖子的链接吗? 找了半天没找到 我电脑安装了个艾美M6的遥控器 遥控器的控制软件 每次开机后都在系统托盘弹窗提示欢迎使用艾美遥控器软件 每次开机都提示 有点讨厌 想禁止这个弹窗 不知道楼主有办法吗? 再自己顶顶 再自己顶顶 再自己顶顶 真是非常厉害, 这个深度,佩服~! 真是非常厉害, 这个深度,佩服~
页:
[1]