2017-04-05 8 views
0

すべて。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 はできません。

とにかく、そこの誰かが助けてくれることを願っています。私が言ったように、私は真剣にこの仕事をする可能性を疑うが、もしそうならば、より良い。

ありがとうございます!

+0

これはあなたのコードで手動で実装することは決してありません。そのためのAPIがあります。 [SHAppBarMessage](https://msdn.microsoft.com/en-us/library/windows/desktop/bb762108(v = vs.85).aspx)のMSDNのドキュメントを参照してください。 –

+0

右... [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)構造体を渡します。 –

答えて

0

Ken Whiteのおかげで、私はSHAppBarMessageを見つけ、websiteが見つかりました。ダウンロード可能なソースに必要な機能があります。私はちょうど今それを実装する必要があります!

私は非常にうれしいです!ありがとうございました!

編集:このスペイン語websiteが見つかりました.Google Translateのヘルプが必要ですが、私のニーズに適しています。右手側で動作させる方法を理解する必要があります!再度、感謝します!