すべて。VB6サイドバーアプリ
私はWindows VistaのガジェットのサイドバーやGoogleデスクトップのサイドバーのように振る舞いたいと思うvb6の「サイドバー」アプリケーションを開発しようとしていますが、他のウィンドウでは最大限に活用できませんでした。 私は、この出来事の可能性はおそらくほとんどないことを認識していますが、私はちょうどその場合に頼んでいます。
現在、私は複数のコントロールを持つフォームを持っていて、それ自体が画面の正確な高さからタスクバーを引いた関数を実行し、タイマーによって位置が設定されています'screen.width - me.width'なので、画面の一番右の高さから始まり、移動することはできません。必要な場合は、高さのコードは次のとおりです。
Declare Function GetUserNameA Lib "advapi32.dll" (ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (_
ByVal hwnd As Long, _
ByVal nIndex 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
Public Declare Function SetLayeredWindowAttributes Lib "user32" (_
ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long
Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const LWA_COLORKEY = &H1
Public Const LWA_ALPHA = &H2
Private Const ABM_GETTASKBARPOS = &H5
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type
Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Function Fixheight()
Dim ABD As APPBARDATA
SHAppBarMessage ABM_GETTASKBARPOS, ABD
Form1.Height = Screen.Height - ((ABD.rc.Bottom - ABD.rc.Top) * 12)
If Form1.Height <= 600 Then
Form1.Height = Screen.Height
End If
End Function
明確にするために、私は「常時オン」機能を望んでいません。私はすでにそれを持っていて、フォームを最大限にするためにフォームを閉じたり、最小化したり、その背後にある別のプログラム(すなわち、クロム、単語など)を最小限に抑えるように、このフォームでは、他のプログラムを最大限に活用できないようにする必要があります。たとえば、ユーザーがChromeを最大化した場合、chromeはマイナスform1.widthを最大化します。 私はこのことが可能であるとは限りませんが、それはクロームのコントロールを取ることを意味し、本質的にそれが me.height = screen.height - ((ABD.rc.Bottom - ABD)の機能を最大化することを意味するためです。 rc.Top)* 12) me.width = screen.width - form1.width はできません。
とにかく、そこの誰かが助けてくれることを願っています。私が言ったように、私は真剣にこの仕事をする可能性を疑うが、もしそうならば、より良い。
ありがとうございます!
これはあなたのコードで手動で実装することは決してありません。そのためのAPIがあります。 [SHAppBarMessage](https://msdn.microsoft.com/en-us/library/windows/desktop/bb762108(v = vs.85).aspx)のMSDNのドキュメントを参照してください。 –
右... [ABM_NEW](https://msdn.microsoft.com/en-us/library/windows/desktop/bb787959(v = vs.85).aspx)でAppBarを登録してから、 [APPBARDATA]に「ABE_RIGHT」を指定して、[ABM_SETPOS](https://msdn.microsoft.com/en-us/library/windows/desktop/bb787959(v=vs.85).aspx)の位置になります(https ://msdn.microsoft.com/en-us/library/windows/desktop/bb773184(v = vs.85).aspx)構造体を渡します。 –