如何将窗口启动时最小化在任务栏

qingtingying 2004-06-14 04:31:48
我想将程序中主窗口启动时就最小化在任务栏,让它以后台服务的方式运行?
...全文
218 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdami 2004-06-23
  • 打赏
  • 举报
回复
开机自启动
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long

Private Const REG_SZ = 1
Private Const HKEY_LOCAL_MACHINE = &H80000002

Private Sub Command1_Click()
Dim txt As String, ret As Long, hKey As Long
ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey)
If ret = 0 Then
If Check1.Value = 1 Then
txt = App.Path & "\" & App.EXEName & ".exe"
ret = RegSetValueEx(hKey, "你的程序名", 0, REG_SZ, ByVal txt, LenB(txt))
Else
ret = RegDeleteValue(hKey, "你的程序名")
End If
RegCloseKey hKey
End If
End Sub

托盘程序,程序启动就变成托盘图标的.
一组picturebox数组控件,里面有各种图标,一个timer,菜单编辑母菜单名为 xx.
都可以自己修改.

Option Explicit
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 WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyI
conA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim t As NOTIFYICONDATA
Private Sub Form_Load()
t.cbSize = Len(t)
t.hWnd = Picture1(0).hWnd
t.uId = 1&
t.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
t.ucallbackMessage = WM_MOUSEMOVE
t.hIcon = Picture1(0).Picture
t.szTip = "Shell_NotifyIcon ..." & Chr$(0)
Shell_NotifyIcon NIM_ADD, t
Timer1.Enabled = True
Me.Hide
App.TaskVisible = False
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Timer1.Enabled = False
t.cbSize = Len(t)
t.hWnd = Picture1(0).hWnd
t.uId = 1&
Shell_NotifyIcon NIM_DELETE, t
End Sub
Private Sub Menu_Click(Index As Integer)
Unload Me
End Sub
Private Sub picture1_MouseMove(Index As Integer, Button As Integer, Shift As
Integer, X As Single, Y As Single)
If Hex(X) = "1E3C" Then
Me.PopupMenu xx
End If
End Sub
Private Sub timer1_Timer()
Static i As Long, img As Long
t.cbSize = Len(t)
t.hWnd = Picture1(0).hWnd
t.uId = 1&
t.uFlags = NIF_ICON
t.hIcon = Picture1(i).Picture
Shell_NotifyIcon NIM_MODIFY, t
Timer1.Enabled = True
i = i + 1
If i = 2 Then i = 0
End Sub
gdami 2004-06-23
  • 打赏
  • 举报
回复
后台服务好像在win98还比较容易.
winxp以上都难搞.

你这个不叫后台服务吧.最多就是开机自启动,并且自己缩小到托盘那里去.
开机自启动可以写入注册表run值.
托盘用一点api就行了.网上到处都是例子下载.
AKillGodKillBuddha 2004-06-23
  • 打赏
  • 举报
回复
systray控件
online 2004-06-22
  • 打赏
  • 举报
回复
参考
托盘程序详解(一)
http://www.hongen.com/pc/program/apitutor/api0012/api01.htm

api实现的服务
http://www.sijiqing.com/vbgood/code/index.asp?action=read&id=1220
NTservice控件做的服务
http://www.sijiqing.com/vbgood/code/index.asp?action=read&id=1225
qingtingying 2004-06-22
  • 打赏
  • 举报
回复
这是为什么?不明白
qingtingying 2004-06-15
  • 打赏
  • 举报
回复
怎么没人回呢?难道是我没有把问题描述清楚吗?我
的目的就是像QQ那样的程序最小化时就在任务栏那样,可以用右菜单进行相应操作,我的要求是系统一启动就自动运行并以最小化图标的形式在任务呆着.

1,486

社区成员

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

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