2016-10-05 6 views
1

これは、2つのWindows 10システム(VM上のもう1台の生きているPC)で期待どおりに機能します。しかし、第3のシステム(残念なことに顧客)では、という形式は、最上位ではなくを最小化します。Windows 10は、呼び出すときにプログラムを最小化します。これをオンに設定します。

SetwindowPos (TargetForm.hwnd, HWND_TOP,0,0,0,0, SWP_NOMOVE Or SWP_NOSIZE) 

フォーム(ウィンドウ)を最小限に抑えます。

何が原因でしょうか?

これは、VB6のプログラム(私はこのプログラムで生計を立てる!笑っていない:)

UPDATEです:コードの

詳細を:

Set FormActive = frmToShow 
frmToShow.Show 
FormZorderSet frmToShow, Z_top 

If Not frmPrevious Is Nothing Then 
frmPrevious.Hide 
End If 

Public Function FormZorderSet(frmTarget As Form, Zorder As FormZorderType) As Long 

    FLAGS = SWP_NOMOVE Or SWP_NOSIZE 
    FormZorderSet = SetWindowPos(frmTarget.hwnd, Zorder, 0, 0, 0, 0, FLAGS) 

グローバル

を宣言
Public Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 
    Const SWP_NOSIZE = &H1 
    Const SWP_NOMOVE = &H2 
    Const HWND_TOPMOST = -1 
    Const HWND_TOP = 0 
+2

私たちに 'SetwindowPos' API宣言と' HWND_TOPMOST'、 'SWP_NOMOVE'と' SWP_NOSIZE'の値を教えてください – wqw

答えて

0

このオンタップ機能を使用してください

'moudle code 
    Option Explicit 
    Public Const SWP_NOMOVE = 2 
    Public Const SWP_NOSIZE = 1 
    Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE 
    Public Const HWND_TOPMOST = -1 
    Public Const HWND_NOTOPMOST = -2 

    Declare Function SetWindowPos Lib "user32" _ 
     (ByVal hwnd As Long, _ 
     ByVal hWndInsertAfter As Long, _ 
     ByVal x As Long, _ 
     ByVal y As Long, _ 
     ByVal cx As Long, _ 
     ByVal cy As Long, _ 
     ByVal wFlags As Long) As Long 

    Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _ 
    As Long 

    If Topmost = True Then 'Make the window topmost 
     SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, _ 
      0, FLAGS) 
    Else 
     SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, _ 
      0, 0, FLAGS) 
     SetTopMostWindow = False 
    End If 
    End Function 

次に使用

'use 
Dim lR As Long 

Private Sub Form_Load() 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
'set form to allways on top 
lR = SetTopMostWindow(Me.hwnd, True) 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
End Sub 

のためにこれは、私のプログラムを最小化することなく、窓10で私のために働いています。

+0

あなたはそれが一番上にあることを確認するためにタイマを使うことができます – vbdevelp

+1

近づけます。これは私が使用しているのと同じ機能です。私の機能はWindows 10で動作します.1つのWindows 10 PCだけで正しく機能しません。 –

関連する問題