1﹑怎么在窗体缩成图标志过后﹐点右键会出现右键菜单? 2﹑出现右键菜单以后﹐没有选其中任何一项﹐然后点桌面或者其它应用程序﹐右键菜单会自动消失掉呢? 3﹑看看IE,当我的鼠标放在上面的图标上会出现提示﹐比如flashget等﹐请问怎么做到?注意该是toolbar的控件﹐不是缩成图标以后的提示哦. 4﹑能不能在窗体任何控件上点右键盘的时候会右键菜单而不是一个个定义? 5﹑怎么才能控制程序在windows启动的自动运行?怎么又去限制它不再自动运行? |
|
|
|
|
用勾子函数,我把要用到的api列出来
1、2: setwindowlong getwindowlong setforegroundwindow callwindowproc 5、: 操作注册表,把你要自动运行的程序的路径写进run子键里面 |
|
|
'Download the full source+pictures+... At http://www.geocities.com/SiliconValley/Campus/3636/trayicon.zip
Private Type NOTIFYICONDATA cbSize As Long hWnd As Long uId As Long uFlags As Long ucallbackMessage As Long hIcon As Long szTip As String * 64 End Type Private Const NIM_ADD = &H0 Private Const NIM_MODIFY = &H1 Private Const NIM_DELETE = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_ICON = &H2 Private Const NIF_TIP = &H4 Private Const WM_LBUTTONDBLCLK = &H203 Private Const WM_LBUTTONDOWN = &H201 Private Const WM_RBUTTONUP = &H205 Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Dim TrayI As NOTIFYICONDATA Private Sub Form_Load() TrayI.cbSize = Len(TrayI) 'Set the window's handle (this will be used to hook the specified window) TrayI.hWnd = pichook.hWnd 'Application-defined identifier of the taskbar icon TrayI.uId = 1& 'Set the flags TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE 'Set the callback message TrayI.ucallbackMessage = WM_LBUTTONDOWN 'Set the picture (must be an icon!) TrayI.hIcon = imgIcon(2).Picture 'Set the tooltiptext TrayI.szTip = "Recent" & Chr$(0) 'Create the icon Shell_NotifyIcon NIM_ADD, TrayI Me.Hide End Sub Private Sub Form_Unload(Cancel As Integer) 'remove the icon TrayI.cbSize = Len(TrayI) TrayI.hWnd = pichook.hWnd TrayI.uId = 1& Shell_NotifyIcon NIM_DELETE, TrayI End End Sub Private Sub mnuPop_Click(Index As Integer) Select Case Index Case 0 MsgBox "KPD-Team 1998" + Chr$(13) + "URL: http://www.allapi.net/" + Chr$(13) + "E-Mail: KPDTeam@Allapi.net", vbInformation + vbOKOnly Case 2 Unload Me End Select End Sub Private Sub pichook_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Msg = X / Screen.TwipsPerPixelX If Msg = WM_LBUTTONDBLCLK Then 'Left button double click mnuPop_Click 0 ElseIf Msg = WM_RBUTTONUP Then 'Right button click Me.PopupMenu mnuPopUp End If End Sub Private Sub Timer1_Timer() Static Tek As Integer 'Animate the icon Me.Icon = imgIcon(Tek).Picture TrayI.hIcon = imgIcon(Tek).Picture Tek = Tek + 1 If Tek = 3 Then Tek = 0 Shell_NotifyIcon NIM_MODIFY, TrayI End Sub |
|
|
有关开机自启动你可以将你的程序的路径写到注册表的hkey_current_user(hkey_local_machine\software\microsoft\windows\currentvertion\run下,(路径不知有没有记错好常时候没用不记得了,你可以在很多参考书上找到!
|
|
三摟的daviddivad(你真行,居然比我还快! Scorpio)
你給的地址下8了﹐而且程序也是運行不了。。。。汗﹗﹗ 偶也知道建立subkey﹐但是偶希望那位給個詳細一點的﹐因為偶的程序老是非法操作。。。 加個問題﹕ form1,form2﹐由form1上的command控制from2的出現﹐但是拉著form1走的過程中﹐form2要和form1一起走﹐請問﹐那位有辦法解決??? |
|
|
|
出个馊主意:form2里加个定时器控件,“严密注视”form1的"动向(Left and Top属性)"。
|
|
定時???監視????
樓上的﹐寫段代碼看看。 form2.left=form1.left+form1.wegiht form2.top=form1.top 就是8知道放在那里有用 |
|
|
|
你要自己加上控件和菜单啊,留个MAIL,我发个例子给你
后面的问题比较复杂,你要做个钩子,拦截FORM1的WM_MOVE和WM_MOVING事件,再来处理FORM2的位置 |
|
|
当然你要用TIMER也可以了
|
|
|
聽說TIMER很消耗內存的。。偶的內存才128。
樓上的﹐偶是莫莫﹐這是偶老姐的號﹐你發給偶哦﹐要是分不夠﹐偶用她的分﹐她有好多好多的分﹐羨慕死偶啦。 celinery@yahoo.com 謝謝謝謝謝謝﹗﹗﹗﹗﹗ |
|
|
daviddivad(你真行,居然比我还快! Scorpio) :麻煩給我也發一份過來好嗎?
leo4587@126.com |
|
http://www.fantasiasoft.net/Zyl910/SysTray1.zip
系统托盘大全 包括Win2k、WinXP新增的一些新特性:浮动提示、可隐藏…… |
|
|
包括解决你的第二个问题
还有:在explorer.exe非法操作后,能自动恢复 |
|
|
|
例子
增加窗体form1、form2;模块modules 在模块中 Option Explicit Public Const GWL_WNDPROC = (-4) Public Const WM_MOVE = &H3 Public Const WM_SIZE = &H5 Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Global lproc As Long Function DialogProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '该函数为Form的窗口处理函数。 Select Case uMsg Case WM_MOVE Form2.Move Form1.Left, Form1.Top + Form1.Height Case WM_SIZE Form2.Move Form1.Left, Form1.Top + Form1.Height Case Else DialogProc = CallWindowProc(lproc, hwnd, uMsg, wParam, lParam) End Select End Function sub Main() form1.show end sub '-------------------------------------------------------------------- 在form1中 Option Explicit Private Sub Form_Load() Form2.Show lproc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf DialogProc) End Sub |
|
|
解决
form1,form2﹐由form1上的command控制from2的出現﹐但是拉著form1走的過程中﹐form2要和form1一起走﹐請問﹐那位有辦法解決??? 问题 |
|
|
yunfeng007(一水寒) ( )
你好厲害EI﹗偶這邊網絡有問題﹐所有這二天沒有上線啦。 我另外開貼給你分吧﹗ 順便你就幫我再解決上面的一個問題吧. zyl910(910:分儿,我又来了!) 斑豬大人﹐你的程序在我這邊運行會出錯的﹐因為我是英文的windows.... 汗﹗﹗ |
|
|
学习
|
|
|
請yunfeng007(一水寒) ( )在另外張貼中去領分﹐本貼明天晚上結。 關于右鍵菜單和沒有去點會自動消失﹐到現在沒有得到一份合適的答案﹐如果那位有完整的例子﹐可以回答或者發給某﹐mail上面有﹐可以另外開貼給分。 |
|
結啦﹐結啦﹐偶只按照給偶幫助大小結﹐不看輩分啦。
斑豬豬的程序實在運行8了﹐所以8能怪某。。。。。 汗。感謝 daviddivad(你真行,居然比我还快! Scorpio) ( ) yunfeng007(一水寒) |
|
|