2015-02-14 7 views
0

Я создаю небольшое приложение checker, которое я хочу запустить в фоновом режиме, у него просто простой таймер, который проверяет, что работает определенный процесс, однако я хочу скрыть это от переключателя Alt-Tab и списка задач возможен тоже. Я наткнулся на какой-то код от Microsoft, но это не от 2003 и больше не работает в последней версии VB.Net, я получаю сообщение об ошибке с:Скрытие приложения VB.Net из списка задач и заказа ALT + TAB?

OwnerhWnd = GetWindow(Me.hWnd, GW_OWNER) 

Я смотрел на нее в Интернете, и последовали некоторые из что люди говорили, но безрезультатно. Многие предложили другим, используя Me.Handle, но я не мог получить эту работу либо просто продолжать получать ту же ошибку:

A first chance exception of type 'System.DllNotFoundException' occurred in Checkr.exe 

Вот код, предоставленный:

Public Class Form1 

    Declare Function ShowWindow Lib "User" (ByVal hWnd As Integer, 
    ByVal nCmdShow As Integer) As Integer 
    Declare Function GetWindow Lib "User" (ByVal hWnd As Integer, 
    ByVal wCmd As Integer) As Integer 
    Const SW_HIDE = 0 
    Const GW_OWNER = 4 

Sub Form_Load() 
    Dim OwnerhWnd As Integer 
    Dim ret As Integer 

    ' Make sure the form is invisible: 
    form1.Visible = False 

    ' Set interval for timer for 5 seconds, and make sure it is enabled: 
    timer1.Interval = 5000 
    timer1.Enabled = True 

    ' Grab the background or owner window: 
    OwnerhWnd = GetWindow(Me.hWnd, GW_OWNER) 
    ' Hide from task list: 
    ret = ShowWindow(OwnerhWnd, SW_HIDE) 

End Sub 


Sub Timer1_Timer() 
    Dim ret As Integer 
    ' Display a message box: 
ret = MsgBox("Visible by Alt+Tab. Cancel to Quit", 1, "Invisible Form") 
    ' If cancel clicked, end the program: 
    If ret = 2 Then 
    timer1.Enabled = False 
    Unload Me 
    End 
    End If 
End Sub 

Оригинал статьи Microsoft можно найти here, если это поможет.

+3

Нет, этот код вздор. «Скрыть из списка задач» очень расплывчато. Вы просто не хотите создавать окно? Затем запишите приложение режима консоли и используйте вкладку «Проект + Свойства», «Приложение» и измените параметр «Тип приложения» на «Приложение Windows Forms». –

ответ

2

Избавиться от этого старого кода ...

Все, что вам нужно сделать в VB.Net устанавливается в FormBorderStyle в форме к FixedToolWindow и установите ShowInTaskBar в Ложные:

FixedToolWindow - A tool window border that is not resizable. A tool window does not appear in the taskbar or in the window that appears when the user presses ALT+TAB. Although forms that specify FixedToolWindow typically are not shown in the taskbar, you must also ensure that the ShowInTaskbar property is set to false, since its default value is true.

+0

Это исправляет проблему спрятать его от коммутатора Alt-Tab! –

0

Try это в вашем случае форма нагрузки:

Call SetWindowLong(Me.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW) 

Вам нужно будет импортировать следующее пространство имен:

Imports System.Runtime.InteropServices 

Как добавить user32 функцию:

<DllImport("user32.dll", _ 
EntryPoint:="SetWindowLong")> _ 
Private Shared Function SetWindowLong(ByVal hWnd As IntPtr, _ 
            ByVal nIndex As Integer, _ 
            ByVal dwNewLong As Integer) _ 
           As Integer 
End Function 

Кроме того, вам нужно будет ли объявлять константы для WS_EX_TOOLWINDOW и GWL_EXSTYLE где:

Dim WS_EX_TOOLWINDOW as Integer = &H80 
Dim GWL_EXSTYLE as Integer = -20 

Теперь ваша форма будет скрыта от обоих панель задач и меню alt-tab. Узнайте больше об этом: http://www.pinvoke.net/default.aspx/Enums/WindowStylesEx.html

Другие константы можно найти на одном сайте, к сожалению, я не могу размещать ссылки. Надеюсь, это ответили на ваш вопрос (если на него еще не ответили)!