lele9013 发表于 2008-9-25 11:59:34

仿鱼鱼桌面秀 壁纸游览遇到问题 请高手解答 已附上源码

用了png做了窗口

无奈不能用 右键菜单 所以只能用了悬浮做右键

问题1 哪位如果可以放到png窗口内 那是最好了

然后 由于采用 搜索 文件夹内的图片

问题2 由于做了循环 右键菜单 中 一些选项 均无法使用 只有循环好才有效cc

问题3 当选择透明度后 会自动设置第一幅 初始时的图片为透明 能否 选择哪个透明就哪个透明 - -

比如 这次有8张图片。加一副初始图片 一共9张

当循环播放到第4张 你按了透明 就从第四张开始 透明了。。

[ 本帖最后由 lele9013 于 2008-9-25 12:15 编辑 ]

lele9013 发表于 2008-9-25 18:48:32

人工置顶。--。。继续请教

kuautoit 发表于 2008-9-25 20:32:15

楼上的是果果吧

哈哈谢谢下来看看

redapple2008 发表于 2008-9-26 08:40:16

有时间就看一下了。这个想法不错呀。

pcbar 发表于 2008-9-26 10:07:02

楼主是要这样的效果吗?

对那个png的udf未做仔细研究,感觉有缺陷,在设置透明度以后,右键失效,我用的winsettrans($png_gui,'',190)之语句,请楼主自忖.

楼主的代码看得很累,ctrl+t应该不麻烦吧

lele9013 发表于 2008-9-26 11:35:27

恩 谢谢啦~~~~~~~~~

透明时的菜单问题也解决了

但还是有一个最大的问题

循环搜索图片并显示时

右键菜单 仍无法出现

我的想法是

搜索一张图片 显示出来。。按右键 可以选择设置主页的。。0 0

[ 本帖最后由 lele9013 于 2008-9-26 14:32 编辑 ]

mhgd 发表于 2009-2-28 22:48:08

不错啊。。。。
我比较喜欢鱼鱼桌面中的png图标,改了一下楼主的代码,有个难题比较难解决:
1.要能把png图标钉在桌面上(不能跑到最上层,压着其它窗口就不好了),不能被任意移动。
2.并能响应单击,双击不同的事件。
#include <GUIConstants.au3>
#include "misc.au3"
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <PNGbackgroundUDF.au3>
_Singleton("myScript")
Opt("GUIOnEventMode", 1)

$title = "png图标"
$PNG_GUI = CreateTransparentGUI("png图标", @ScriptDir & "\11.png", 0, 255, 11, 15, -1, -1)

GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "click", $PNG_GUI)


While 1
        Sleep(1000)
WEnd


Func click()
        Run("C:\WINDOWS\system32\notepad.exe")
EndFunc

[ 本帖最后由 mhgd 于 2009-2-28 23:55 编辑 ]

sd007 发表于 2009-3-18 16:07:05

钉在桌面的代码:
#include <GUIConstantsEx.au3>
#Include <WinAPI.au3>

Opt("GUIOnEventMode", 1);启用 OnEvent 函数notifications      

;$Form1 = GUICreate("第一种方法", 100, 100, 100, 100,-1,-1,_WinAPI_GetWindow(_WinAPI_FindWindow('Progman', 'Program Manager'),'$GW_CHILD'))
;GUISetOnEvent($GUI_EVENT_CLOSE, "_exit" )
;GuiSetState()

$Form2 = GUICreate("第二种方法", 100, 100, 300, 100,-1,-1,_WinAPI_FindWindowEx(_WinAPI_FindWindow('Progman', ''),0,'shelldll_defview',''))
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit" )
GuiSetState()

While 1
      Sleep(20)
WEnd


func _exit()
      GUIDelete()
    exit
endfunc


;返回子窗口句柄,比如:打开一个.txt文件,你用FindWindow函数只能找到父窗口的名字可能是ff.txt,但你要找到文件输入框就用这个FindWindEx函数
;$hwndParent:要查找子窗口的父窗口句柄
;$hwndChildAfter:子窗口句柄,如果为NULL就从第一个开始找,如果hwndParent为NULL,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口,Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口
;$lpszClass:类名
;$lpszWindow:窗口或者控件的title或者caption
Func _WinAPI_FindWindowEx($hwndParent, $hwndChildAfter, $lpszClass, $lpszWindow);
      Local $aResult

      $aResult = DllCall("User32.dll", "hwnd", "FindWindowEx", "hwnd", $hwndParent, "hwnd", $hwndChildAfter, "str", $lpszClass, "str", $lpszWindow)
      If @error Then Return SetError(@error, 0, 0)
      Return $aResult
EndFunc

mhgd 发表于 2009-3-18 20:35:32

好像不行啊,只能实现钉在最前面啊。

sd007 发表于 2009-3-23 16:55:30

我刚找到的这段代码可以钉在桌面,来自http://www.lunhui.net.cn/article.asp?id=43,谢谢三痕

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Example1()


; example 1
Func Example1()
    Local $msg,$Child,$hwnd

    $Child=GUICreate("My GUI")
   
    $hwnd=WinGetHandle("Program Manager","")
   
    DllCall("user32.dll","hwnd","SetParent","hwnd",$Child,"hwnd",$hwnd)
   
    GUISetState(@SW_SHOW)      


    While 1
      $msg = GUIGetMsg()

      If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    GUIDelete()
EndFunc   ;==>Example1

chenronting 发表于 2010-2-2 17:16:05

唉。还是没找到改背景的源码 。
页: [1]
查看完整版本: 仿鱼鱼桌面秀 壁纸游览遇到问题 请高手解答 已附上源码