Параметр "Visible" сторонних окон (процессов)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Параметр "Visible" сторонних окон (процессов)

Сообщение claymen » 16.02.2007 (Пт) 18:43

Некий процесс выводит на экран окно "Hello World".
Можно ли применить к нему (к этому окну) параметр Visible=FALSE? Чтобы это окно то появлялось, то исчезало (нпример по таймеру)?
и начинали мы все чайниками, но потом...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 16.02.2007 (Пт) 20:50

Можно. ShowWindow. За видимость отвечает стиль WS_VISIBLE.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Сообщение claymen » 17.02.2007 (Сб) 5:17

BV
Вопрос по ShowWindow...
Я так понял, что этот стиль WS_VISIBLE из следующего:
Код: Выделить всё
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Где hwnd - это handle окна, с которым будем производить действия, nCmdShow - а в этот параметр и нужно вставлять WS_VISIBLE
Мой код почемуто не хочет работать, может стиль WS_VISIBLE должен иметь другие значения?
Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const WS_VISIBLE = 1

Private Sub Form_Load()
    Dim WinWnd As Long
    'Ищем, ну например окно XXX
    WinWnd = FindWindow(vbNullString, "XXX")
    'Теперь делаем его невидимым
    ShowWindow WinWnd, WS_VISIBLE
End Sub
и начинали мы все чайниками, но потом...

claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Разобрался

Сообщение claymen » 17.02.2007 (Сб) 5:31

Извините за глупый вопрос. Разобрался наконец-то.
WS_VISIBLE=0, то невидимо, а WS_VISIBLE=1, то видимо.
А вот наводящий вопрос:
Некая программа выдает на экран окошко, но без кнопок управления, без названия окна, вообщем не понятно как искать handle такого окна.
Мне посоветовали программу Spy++. Я поискал в сети, но не нашел. Кто ни-ть знает, где такую софту можно скачать?
и начинали мы все чайниками, но потом...

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 17.02.2007 (Сб) 5:44

Уважаемый claymen,
Spy++ должна входить в "стандартный набор VB 6.0", если почему-то не установлена, поищите на CD (VB).
А поиск нужных "handle"`s каждый выполняет сам в "меру своей испорченности".

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.02.2007 (Сб) 7:46

2 claymen, WS-VISIBLE - есть стиль окна и определяется так:

#define WS_VISIBLE 0x10000000L

по нашенски так:

Public Const WS_VISIBLE As Long = &H10000000

что отнюдь не 1 и у ж тем более не ноль. Но речь, впрочем не об этом. Сия константа используется при установке стилей окна функциями CreateWindow или CreateWindowEx. А то, что тебе нужно, это константы SW_HIDE и SW_SHOW, которые надо передавать в аргументе nCmdShow функции ShowWindow. Сам найдешь значения или подсказать?
З.Ы. Или подсказать где искать?
Весь мир матрица, а мы в нем потоки байтов!

claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Сообщение claymen » 17.02.2007 (Сб) 12:38

!Viper!
ОК, разобрался. Спасибо!
и начинали мы все чайниками, но потом...

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 17.02.2007 (Сб) 19:55

константу WS_VISIBLE можно использовать для скрытия-отображения окна:
SetWindowLong(hwnd, GWL_STYLE, nonvizstyle OR WS_VISIBLE )

просто после смены стиля окна вызвать SetWindowPos , разумеется с нужными параметрами.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 102

    TopList