爱体育

 
 加入
查看: 451|回复: 16

新手求助 win d 或者任务栏”返回桌面“ 后怎么让窗口不被隐藏-爱体育

[复制链接]
发表于 2023-9-18 20:10:12 | 显示全部楼层 |
本帖最后由 24779987 于 2023-9-18 20:24 编辑

请教一个问题 win d 或者任务栏”返回桌面“ 返回桌面后会隐藏所有窗口(并不是最小化窗口),如果添加 $ws_ex_topmost 拓展样式后窗口会置顶不会被隐藏,但是这样窗口会在所有其他窗口之前,请大佬赐教怎么才能 不被 “返回桌面” 隐藏窗口,且窗口在桌面上,请赐教!

  1. #requireadmin
  2. #include
  3. #include
  4. #include
  5. #include
  6. #include
  7. #include

  8. local $smyautoittitle = "network_info" ;
  9. if winexists($smyautoittitle) then exit ;检测程序是否重复运行
  10. autoitwinsettitle($smyautoittitle)

  11. local $networkadapterinfo = _networkadapterinfo()
  12. local $ipadd = $networkadapterinfo[1][4]
  13. local $macadd = $networkadapterinfo[1][8]
  14. local $dns = $networkadapterinfo[1][5]
  15. local $form1


  16. local $iwidth = 230, $iheight = 300, $ix = @desktopwidth - $iwidth, $iy = 0
  17. #region ### start koda gui section ### form=
  18. $form1 = guicreate("network_info", $iwidth, $iheight, $ix, $iy, $ws_popup, $ws_ex_layered $ws_ex_toolwindow $ws_ex_topmost)
  19. guisetbkcolor(0xf1f1f1)
  20. _winapi_setlayeredwindowattributes($form1, 0xf1f1f1, 0, $lwa_colorkey) ;设置透明

  21. $label1 = guictrlcreatelabel("计算机名:" & @computername, 0, 10, 300, 50)
  22. $label2 = guictrlcreatelabel("系统版本:" & @osversion & " " & @osarch, 0, 30, 300, 50)
  23. $label3 = guictrlcreatelabel("ip地址  :" & $ipadd, 0, 50, 300, 50)
  24. $label4 = guictrlcreatelabel("mac地址 :" & $macadd, 0, 70, 300, 50)
  25. $label5 = guictrlcreatelabel("dns地址 :" & $dns, 0, 90, 300, 50)


  26. guictrlsetcolor($label1, 0xffffff)
  27. guictrlsetcolor($label2, 0xffffff)
  28. guictrlsetcolor($label3, 0xffffff)
  29. guictrlsetcolor($label4, 0xffffff)
  30. guictrlsetcolor($label5, 0xffffff)


  31. guisetstate(@sw_show,$form1)

  32. #endregion ### end koda gui section ###





  33. local $networkadapterinfo = _networkadapterinfo()

  34. opt("traymenumode", 3)

  35. traysetclick("9")
  36. trayseticon("ip.ico")
  37. traysetstate($tray_iconstate_show)
  38. traysettooltip("ip地址:" & $networkadapterinfo[1][4])
  39. $menuitem1 = traycreateitem("ip     :" & $networkadapterinfo[1][4])
  40. $menuitem2 = traycreateitem("mac :" & $networkadapterinfo[1][8])
  41. traycreateitem("dns :" & $networkadapterinfo[1][5])
  42. traycreateitem("")
  43. $menuitem3 = traycreateitem("信息报修")
  44. traycreateitem("")
  45. $menuitem4 = traycreateitem("exit")


  46. while 1
  47.         $msg = traygetmsg()

  48.         select
  49.                 case $msg = $menuitem1
  50.                         _clipboard_setdata($networkadapterinfo[1][4])
  51.                         traytip("当前ip地址已复制到剪贴板", $networkadapterinfo[1][4], 0, $tip_iconasterisk)

  52.                         
  53.                 case $msg = $menuitem2
  54.                         _clipboard_setdata($networkadapterinfo[1][8])
  55.                         traytip("当前mac地址已复制到剪贴板", $networkadapterinfo[1][8], 0, $tip_iconasterisk)
  56.                         
  57.                 case $msg = $menuitem3
  58.                         
  59.                 case $msg = $menuitem4
  60.                         exitloop
  61.                         exit
  62.         endselect
  63. wend
复制代码
发表于 2023-9-18 20:40:03 | 显示全部楼层
_winapi_setparent($form1, wingethandle('program manager')) 设置桌面为父窗口
 楼主| 发表于 2023-9-18 21:31:38 | 显示全部楼层

_winapi_setparent($form1, wingethandle('program manager')) 设置桌面为父窗口

感谢版主,学习了。设置桌面为父窗口后控件好像也变透明了,运行后什么窗口也不显示,如果我不设置透明窗口的话可以显示(也达到我想要的不被隐藏的效果了,但桌面啥也没有了),还请版主解惑。
 楼主| 发表于 2023-9-18 21:35:13 | 显示全部楼层

_winapi_setparent($form1, wingethandle('program manager')) 设置桌面为父窗口

我发现win11中好像不行,但是win10可以。
发表于 2023-9-18 22:06:54 | 显示全部楼层

我发现win11中好像不行,但是win10可以。

没用过win11,不知道桌面控件是什么
你可以看看是否存在且唯一
  1. #include
  2. $awin = winlist('program manager')
  3. _arraydisplay($awin)
复制代码
发表于 2023-9-19 20:21:02 | 显示全部楼层
本帖最后由 w60711 于 2023-9-19 20:23 编辑

没用过win11,不知道桌面控件是什么
你可以看看是否存在且唯一


目前手边只有win 11
但我之前在win 10也是不行...
真的很奇怪~






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2023-9-19 20:31:07 | 显示全部楼层
本帖最后由 afan 于 2023-9-19 21:00 编辑

目前手边只有win 11
但我之前在win 10也是不行...
真的很奇怪~

我是在win7测试ok的~ 添加了调试msg看看

  1. #requireadmin
  2. #include

  3. local $hwin = wingethandle('[title:program manager; class:progman]')
  4. local $apos = wingetpos($hwin)

  5. local $form1 = guicreate("network_info", 230, 200, @desktopwidth - 230, 0, 0x80000000, 0x080000 0x080) ;$ws_popup = 0x80000000 ;$ws_ex_layered = 0x080000 ;$ws_ex_toolwindow = 0x080
  6. guisetbkcolor(0xf1f1f1)
  7. _winapi_setlayeredwindowattributes($form1, 0xf1f1f1, 0, 0x01) ;设置透明 ;$lwa_colorkey = 0x01
  8. guictrlsetdefcolor(0xffffff)
  9. guictrlcreatelabel("计算机名:" & @computername, 0, 10, 300, 50)
  10. guictrlcreatelabel("系统版本:" & @osversion & " " & @osarch, 0, 30, 300, 50)
  11. local $irt = _winapi_setparent($form1, $hwin)
  12. msgbox(0, $hwin, $apos[2] & ' x ' & $apos[3] & @lf & $irt)
  13. guisetstate()

  14. opt("traymenumode", 3)
  15. $menuitem4 = traycreateitem("exit")
  16. while traygetmsg() <> $menuitem4
  17. wend
复制代码
发表于 2023-9-19 21:04:28 | 显示全部楼层
本帖最后由 w60711 于 2023-9-19 21:10 编辑

我是在win7测试ok的~ 添加了调试msg看看

有,測試過了~
官方幫助文檔也是同情形...
  1. #include
  2. #include
  3. #include

  4. local $hparent = wingethandle('[class:progman;title:program manager]')

  5. local $hform = guicreate('test ' & stringreplace(@scriptname, '.au3', '()'), 400, 400, 100, 100, -1, $ws_ex_toolwindow)

  6. ; attach window to the desktop (always on bottom)
  7. _winapi_setparent($hform, $hparent)

  8. guisetstate(@sw_shownoactivate)

  9. do
  10. until guigetmsg() = $gui_event_close
复制代码


系統:win 11 pro x64, admin
au3:3.3.16.1





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2023-9-19 21:13:42 | 显示全部楼层

有,測試過了~
官方幫助文檔也是同情形...

你的系统64位,但默认执行的居然是 autoit3.exe 而不是 autoit3_x64.exe?
那就加上 #autoit3wrapper_usex64=y 试试
发表于 2023-9-19 23:11:12 | 显示全部楼层

你的系统64位,但默认执行的居然是 autoit3.exe 而不是 autoit3_x64.exe?
那就加上 #autoit3wrapper_us ...

安裝時我有默認使用x86~

#autoit3wrapper_usex64=y
這我有添加了,結果一樣~
发表于 2023-9-20 10:36:05 | 显示全部楼层

安裝時我有默認使用x86~

#autoit3wrapper_usex64=y

可能桌面有遮挡层需要隐藏,没有11系统,无法测试~
发表于 2023-9-20 13:53:56 | 显示全部楼层

可能桌面有遮挡层需要隐藏,没有11系统,无法测试~

看來...可能和虛擬桌面/task view有關...
发表于 2023-9-20 14:07:01 | 显示全部楼层

看來...可能和虛擬桌面/task view有關...
https://www.autoitscript.com/forum/topic/187374-sometimes- ...

之前我在win10上测试了,同样不显示……  调试了一些代码后正常显示了,也正常固定不会被win-d隐藏,现在在查原因,一会再看看你提供的链接~
 楼主| 发表于 2023-9-20 21:20:07 | 显示全部楼层

之前我在win10上测试了,同样不显示……  调试了一些代码后正常显示了,也正常固定不会被win-d隐藏,现在 ...

win7  没测试

win10 上如果设置桌面为父窗口,且窗口设置透明就不会显示  label 的 文字(相当于什么都没显示),
如果不设置父窗口,还是有文字显示,就是不会固定在桌面 win d 就被隐藏了。

win11下 只要设置桌面为父窗口不管设不设置透明都不会显示。
发表于 2023-9-20 22:21:24 | 显示全部楼层
win10操作比较麻烦,需要将桌面 _sendmessage($hwin, 0x52c, 0) “炸开”,类似动态壁纸之类的操作,原理如
再隐藏其中的一个 workerw 窗口。带有透明分层样式的窗口无需设置桌面为父窗口即可正常显示
您需要登录后才可以回帖 登录 | 加入

本版积分规则

||小黑屋|爱体育 ( ) "));

gmt 8, 2023-12-7 01:01 , processed in 0.098966 second(s), 22 queries .

powered by x3.5

© 2001-2023 .

返回列表
网站地图