Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как скрыть окно? Добавлено: 17.01.06 16:55  

Автор вопроса:  SerJ
Option Explicit
Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    wShowWindow As Integer
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type

Private Type PROCESS_INFORMATION
    hProcess As Long
    hThread As Long
    dwProcessID As Long
    dwThreadID As Long
End Type
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&

Public Sub ExecCmd(cmdline As String)
    Dim proc As PROCESS_INFORMATION
    Dim start As STARTUPINFO
    Dim ret As Long
    start.cb = Len(start)
    start.wShowWindow = 0
    ret = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)
    ret = WaitForSingleObject(proc.hProcess, INFINITE)
    ret = CloseHandle(proc.hProcess)
End Sub

Sub Main
    ExecCmd "Calc.exe"
End Sub


Данный код при выполении загружает в память прогу типа калькулятор, но не прячет её. Подскажите, в чём тут допущена ошибка?

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 1
Автор ответа:
 GeorgeGA



Вопросов: 1
Ответов: 101
 Профиль | | #1 Добавлено: 17.01.06 19:43
SerJ
Если тебе надо просто открыть калькулятор, то используй shell("",vbhide),vbhide тебе его и спрячет:).Проверить завершение проги можешь по её хендлу.вот и всё, зачем ты так замарачивался?

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 17.01.06 20:44
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long


Public Function Window_show(hWnd As Long, ShowOptions As Byte)
'Куча действий с окном

'Значения ShowOptions:

'0 - Hide
'3 - MAXIMIZE
'6 - MINIMIZE
'9 - RESTORE
'5 - SHOW
'10 -SHOWDEFAULT
'3 - SHOWMAXIMIZED
'2 - SHOWMINIMIZED
'7 - SHOWMINNOACTIVE
'8 - SHOWNA
'4 - SHOWNOACTIVATE
'1 - SHOWNORMAL
ShowWindow hWnd, ShowOptions
End Function

Ответить

Номер ответа: 3
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #3 Добавлено: 18.01.06 00:32
И чё мне её в таймер запихнуть? Неее. Нет и нет!!! Ну это же по-ламмерски как-то. Где вы, профи?

Ответить

Номер ответа: 4
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #4 Добавлено: 18.01.06 00:35
Если тебе надо просто открыть калькулятор, то используй shell("",vbhide),vbhide тебе его и спрячет:).Проверить завершение проги можешь по её хендлу.вот и всё, зачем ты так замарачивался?

Серьёзно? Да ну? Я, чесн говоря, и не знал! Нууу, спасибо...

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 18.01.06 01:18
И чё мне её в таймер запихнуть?
Зачем же, достаточно 1 раз скрыть... впрочем если тебе нужно скрыть запускаемое приложение, vbHide в самый раз...

Ответить

Номер ответа: 6
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #6 Добавлено: 18.01.06 13:53
Может он имеет ввиду скрыть из списка процессов? :)

Ответить

Номер ответа: 7
Автор ответа:
 Эндрю



ICQ: 303-304-826 

Вопросов: 24
Ответов: 103
 Web-сайт: www.пока_нет.ru
 Профиль | | #7
Добавлено: 21.01.06 00:30

А можно где-нибудь написать строчку Form1.Visible = False

Ответить

Номер ответа: 8
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #8 Добавлено: 24.01.06 19:30
Зачем же, достаточно 1 раз скрыть... впрочем если тебе нужно скрыть запускаемое приложение, vbHide в самый раз...

Хорошо, а как тогда мне дать среагировать на WaitForSingleObject?

Может он имеет ввиду скрыть из списка процессов? :)

нет, этого делать не нужно.

А можно где-нибудь написать строчку Form1.Visible = False

Это как? Разве что
OperatingSystem.ActiveOS.Windows("cmd.exe";).Visible=False

:)
Окно-то не моё. Что внести в данный код, что энто всё реализовать-запустить прогу "cmd.exe" с некоторыми параметрами. И когда данное окошко закроется (а его работа займёт несколько сек), дать знать это моей проги

Ответить

Номер ответа: 9
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #9 Добавлено: 24.01.06 19:32
ЗЫ. Сорри за некорректнось работы моего драйвера - "myhands.sys"

Ответить

Номер ответа: 10
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #10
Добавлено: 24.01.06 22:07
Цитата MSDN:

wShowWindow
Ignored unless dwFlags specifies STARTF_USESHOWWINDOW. ...

Ответить

Номер ответа: 11
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #11 Добавлено: 24.01.06 22:28
Цитата MSDN:


wShowWindow
Ignored unless dwFlags specifies STARTF_USESHOWWINDOW. ...


Если можно, поподробнее, или если сам не можешь, дай плиз полную ссылочку на этот ресурс

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 24.01.06 23:43
Блин! Как скрыть окно зная хендел я показал, найти хендел по заголовку
- FindWindow Что ещё?

Ответить

Номер ответа: 13
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #13 Добавлено: 25.01.06 02:34
да при чём здесь FindWindow? Не катит он! смотри из монего прримера:
Private Type STARTUPINFO
    cb As Long
    lpReserved As String
    lpDesktop As String
    lpTitle As String
    dwX As Long
    dwY As Long
    dwXSize As Long
    dwYSize As Long
    dwXCountChars As Long
    dwYCountChars As Long
    dwFillAttribute As Long
    dwFlags As Long
    [B]wShowWindow As Integer [/B]
    cbReserved2 As Integer
    lpReserved2 As Long
    hStdInput As Long
    hStdOutput As Long
    hStdError As Long
End Type

Как ЭТО реализовать?
неуж-то решение этого вопроса ч/з FindWindow?
Тем более, если реализовать его, то обязательно надо таймер!
Хакер, твой способ я знаю - он простенький, но ресурсоемкий!
Народ, Victor, подскажите ссылочку на этот МСДН-ресурс или если кто помнит - выложите этот маленький (уверен) кусочек кода! Заранее благодарен всем

Ответить

Номер ответа: 14
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #14
Добавлено: 26.01.06 10:34
The STARTUPINFO structure is used with the CreateProcess, CreateProcessAsUser, and CreateProcessWithLogonW functions to specify the window station, desktop, standard handles, and appearance of the main window for the new process.


BOOL CreateProcess(
  LPCTSTR lpApplicationName,
  LPTSTR lpCommandLine,
  LPSECURITY_ATTRIBUTES lpProcessAttributes,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  BOOL bInheritHandles,
  ;DWORD dwCreationFlags,
  LPVOID lpEnvironment,
  LPCTSTR lpCurrentDirectory,
  [B]LPSTARTUPINFO[/B] lpStartupInfo,
  LPPROCESS_INFORMATION lpProcessInformation
);


Полностью цитировать не буду, сейчас ссылочку поищу.

Ответить

Номер ответа: 15
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #15
Добавлено: 26.01.06 10:38
Вот по STARTUPINFO а дальше ссылочки...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/startupinfo_str.asp

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам