求助﹕关于API的一些小问题

daisy8675 2003-10-15 08:50:41
因为刚接触API﹐所以问些很简单的问题﹐大家不能用砖头砸过来哦^^

1﹑怎么在窗体缩成图标志过后﹐点右键会出现右键菜单?

2﹑出现右键菜单以后﹐没有选其中任何一项﹐然后点桌面或者其它应用程序﹐右键菜单会自动消失掉呢?

3﹑看看IE,当我的鼠标放在上面的图标上会出现提示﹐比如flashget等﹐请问怎么做到?注意该是toolbar的控件﹐不是缩成图标以后的提示哦.

4﹑能不能在窗体任何控件上点右键盘的时候会右键菜单而不是一个个定义?

5﹑怎么才能控制程序在windows启动的自动运行?怎么又去限制它不再自动运行?

...全文
71 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
daisy8675 2003-10-21
  • 打赏
  • 举报
回复
結啦﹐結啦﹐偶只按照給偶幫助大小結﹐不看輩分啦。

斑豬豬的程序實在運行8了﹐所以8能怪某。。。。。

汗。感謝 daviddivad(你真行,居然比我还快! Scorpio) ( )
yunfeng007(一水寒)
Ljat 2003-10-20
  • 打赏
  • 举报
回复

請yunfeng007(一水寒) ( )在另外張貼中去領分﹐本貼明天晚上結。

關于右鍵菜單和沒有去點會自動消失﹐到現在沒有得到一份合適的答案﹐如果那位有完整的例子﹐可以回答或者發給某﹐mail上面有﹐可以另外開貼給分。

flc 2003-10-20
  • 打赏
  • 举报
回复
学习
Ljat 2003-10-20
  • 打赏
  • 举报
回复
yunfeng007(一水寒) ( )
你好厲害EI﹗偶這邊網絡有問題﹐所有這二天沒有上線啦。
我另外開貼給你分吧﹗
順便你就幫我再解決上面的一個問題吧.

zyl910(910:分儿,我又来了!)
斑豬大人﹐你的程序在我這邊運行會出錯的﹐因為我是英文的windows....
汗﹗﹗
yunfeng007 2003-10-18
  • 打赏
  • 举报
回复
解决
form1,form2﹐由form1上的command控制from2的出現﹐但是拉著form1走的過程中﹐form2要和form1一起走﹐請問﹐那位有辦法解決???
问题
yunfeng007 2003-10-18
  • 打赏
  • 举报
回复
例子
增加窗体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

zyl910 2003-10-17
  • 打赏
  • 举报
回复
包括解决你的第二个问题

还有:在explorer.exe非法操作后,能自动恢复
zyl910 2003-10-17
  • 打赏
  • 举报
回复
http://www.fantasiasoft.net/Zyl910/SysTray1.zip
系统托盘大全
包括Win2k、WinXP新增的一些新特性:浮动提示、可隐藏……
leo4587 2003-10-17
  • 打赏
  • 举报
回复
daviddivad(你真行,居然比我还快! Scorpio) :麻煩給我也發一份過來好嗎?

leo4587@126.com
Ljat 2003-10-17
  • 打赏
  • 举报
回复
聽說TIMER很消耗內存的。。偶的內存才128。

樓上的﹐偶是莫莫﹐這是偶老姐的號﹐你發給偶哦﹐要是分不夠﹐偶用她的分﹐她有好多好多的分﹐羨慕死偶啦。

celinery@yahoo.com

謝謝謝謝謝謝﹗﹗﹗﹗﹗
daviddivad 2003-10-16
  • 打赏
  • 举报
回复
当然你要用TIMER也可以了
daviddivad 2003-10-16
  • 打赏
  • 举报
回复
你要自己加上控件和菜单啊,留个MAIL,我发个例子给你

后面的问题比较复杂,你要做个钩子,拦截FORM1的WM_MOVE和WM_MOVING事件,再来处理FORM2的位置
daisy8675 2003-10-16
  • 打赏
  • 举报
回复
定時???監視????
樓上的﹐寫段代碼看看。
form2.left=form1.left+form1.wegiht
form2.top=form1.top

就是8知道放在那里有用
Gujianda 2003-10-16
  • 打赏
  • 举报
回复
出个馊主意:form2里加个定时器控件,“严密注视”form1的"动向(Left and Top属性)"。
daisy8675 2003-10-16
  • 打赏
  • 举报
回复
三摟的daviddivad(你真行,居然比我还快! Scorpio)
你給的地址下8了﹐而且程序也是運行不了。。。。汗﹗﹗

偶也知道建立subkey﹐但是偶希望那位給個詳細一點的﹐因為偶的程序老是非法操作。。。

加個問題﹕

form1,form2﹐由form1上的command控制from2的出現﹐但是拉著form1走的過程中﹐form2要和form1一起走﹐請問﹐那位有辦法解決???
sdmltyj 2003-10-16
  • 打赏
  • 举报
回复
有关开机自启动你可以将你的程序的路径写到注册表的hkey_current_user(hkey_local_machine\software\microsoft\windows\currentvertion\run下,(路径不知有没有记错好常时候没用不记得了,你可以在很多参考书上找到!
daviddivad 2003-10-15
  • 打赏
  • 举报
回复
'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
hengxin54 2003-10-15
  • 打赏
  • 举报
回复
用勾子函数,我把要用到的api列出来
1、2:
setwindowlong
getwindowlong
setforegroundwindow
callwindowproc

5、:
操作注册表,把你要自动运行的程序的路径写进run子键里面

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧