Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программное размещение окон на экране 
:(
    Опции темы
kb-nn
Дата 24.1.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



кто- нибудь знает, как можно 2 файла, открытие с помощью ShellExecute, программно расположить на экране определенным образом?(например, чтобы 1-й файл занимал левую треть экрана, а второй- всю остальную часть?)
PM MAIL ICQ   Вверх
Naghual
Дата 24.1.2005, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



По идее - это возможно. Функция возвращает указатель на экземпляр приложения.
Вот по нему можно получить указатель на окно. И екго уже разместить.
Но все это - по идее.



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
~FoX~
Дата 24.1.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



kb-nn
А может тебе Split нужен?


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
kb-nn
Дата 24.1.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



это как?
сплит вроде разбивает строки?
при чем он тут?
PM MAIL ICQ   Вверх
Naghual
Дата 24.1.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



А еще, можно использовать FindWindow для получения окна.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
kb-nn
Дата 24.1.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



а подробнее можно?
PM MAIL ICQ   Вверх
Naghual
Дата 24.1.2005, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Ну тогда начнем с конца.
Чтобы задать размер/координаты окна, используется АПИ функция SetWindowPos:
Код
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" ( _
  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

Параметр, указывающий над каким окном производится действие - hwnd.

Значит нам нужно получить этот hwnd. А тут возможны варианты.

Напиши подробнее что и как ты запускаеш через ShellExecute.

Это сообщение отредактировал(а) Naghual - 24.1.2005, 17:20


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
kb-nn
Дата 25.1.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



о! спасибо!
на первый взгляд- понятно.
PM MAIL ICQ   Вверх
kb-nn
Дата 27.1.2005, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



слушайте,
я открываю файл с помощью ShellExecute.
потом использую SetWindowPos с полученным дескриптором.
и от функции SetWindowPos никакого эффекта.
что обозначают параметры
hWndInsertAfter, wFlags у функции SetWindowPos ?
PM MAIL ICQ   Вверх
Naghual
Дата 27.1.2005, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Цитата
потом использую SetWindowPos с полученным дескриптором

А дескриптор ты откуда получил?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
kb-nn
Дата 27.1.2005, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



из ShellExecute
PM MAIL ICQ   Вверх
Naghual
Дата 27.1.2005, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



А это не дескриптор hWnd!
Это "... instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application". А проще - это указатель на приложение (или сообщение об ошибке).

Вот основной вопрос:
Как из указателя приложения, получить дескриптор его окна.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
kb-nn
Дата 27.1.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



ну хорошо
я пишу
id=SelleExecute (...)
myHWnd=FindWindow(0,id)
SetWindowPos(myHWnd,0,0,0,400,500,1)
и не работает smile
PM MAIL ICQ   Вверх
Naghual
Дата 27.1.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Не правильно. Потому и не работает.
FindWindow ищет по заголовку окна, соответствующего классу (первый параметр).

А вот как правильно - я пока не знаю. Буду думать.

Это сообщение отредактировал(а) Naghual - 27.1.2005, 16:22


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
Дата 2.2.2005, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Запустили шелэкзекут, да?
Потом:
Код

Dim hw as long
hw = FindWindow ( vbNullString, "Заголовок окна" )
ну и сетвиндовпоз. Это если известен заголовок
Вот: купи Программирование в Win32 API на Visual Basic Дена Эпплмана. 500 руб, зато большинство винапи знаешь!

Это сообщение отредактировал(а) Run-time error - 2.2.2005, 15:20
PM   Вверх
kb-nn
Дата 2.2.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



но он неизвестен, вот в чем вопрос!
Добавлено @ 15:33
известно только имя файла.
Добавлено @ 15:34
кстати. спасибо за книжку.

PM MAIL ICQ   Вверх
Exception
Дата 2.2.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



По моему была какаято апи функция для получения hwnd по process handle. Завтра напишу сегодня нет времени smile
PM   Вверх
kb-nn
Дата 2.2.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



спасибо тебе
PM MAIL ICQ   Вверх
__Sergey__
Дата 3.2.2005, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 21.1.2005

Репутация: 4
Всего: 4



Для запуска процесса используй CreateProcess.
В возвращяемой структуре PROCESS_INFORMATION есть параметры,
для ф-ции EnumThreadWindows.
PM MAIL   Вверх
Exception
Дата 3.2.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Точно!
Код

Public Type PROCESS_INFORMATION
       hProcess As Long
       hThread As Long
       dwProcessId As Long
       dwThreadId As Long
End Type

dwThreadId - идентификатор нити. Потом с помощью EnumThreadWindows получаем список окон этой проги(их hwnd) и setwinpos
Описание EnumThreadWindows:
Код

Public Declare Function EnumThreadWindows Lib "user32" Alias "EnumThreadWindows" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long

lpfn - callback определенный через AddressOf
Ну вощем дальше поймёшь.
ЗЫ Книжка зовётся "Win32 API и Visual Basic" Дена Эпплмана.

Это сообщение отредактировал(а) Run-time error - 3.2.2005, 18:40
PM   Вверх
kb-nn
Дата 4.2.2005, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



что- то я ничего не понял.
PM MAIL ICQ   Вверх
Exception
Дата 4.2.2005, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Ты когда-нить AddressOf использовал?
Смотри! Объявляешь структуру PROCESS_INFORMATION, таскаешь из нее dwThreadId (идентификатор нити). То есть процесс запускаешь не через ShellExecute а чрез CreateProcess(описание в win32api.txt) ну и все структуры там же. Поищи в MSDN CreateProcess. Так вот потом создаёшь модуль с функцией типа EnumThreadWindowsProc. Параметры не помню, порою. Потом из кода вызываешь EnumThreadWindows с парам.:
dwThreadId - ид. нити
lpfn - пишешь прямо в вызове AddressOf EnumThreadWindowsProc
lparam оставляй 0.
Например:
Код

EnumThreadWindows OurThreadId, AddressOf EnumThreadWindowsProc, 0

Для каждого окна этой нити( а у нас оно одно) Винды вызовут фнкцию EnumThreadWindowsProc написанною тобой.
В вызове тебе и передадут hwnd.
Вроде так:
Public Function EnumThreadWindowsProc(ByVal hwnd as long, Byval lparam as long) As Long
SetWindowPos(hwnd, и т.д....)
'Чтоб прервать перечисление возврати ноль.
EnumThreadWindowsProc = 0
end Function
Насчет описания ф-ции не уверен смотри MSDN.
Добавлено @ 21:09
Короче завтра покопаюсь напишу код smile
PM   Вверх
Naghual
Дата 4.2.2005, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Странно, но у меня не работает CreateProcess!
Т.е. функция завершается успешно и даже имеется коекакая информация о процессе. Но вот запущенного приложения нет. Ни в исполняемых программах ни в процессах. Как-бы и не запустилось вовсе оно.
Возможно я делаю что-то не так...



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
  Дата 5.2.2005, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Не знаю что у тебя не так, смотри мои параметры.
Приведенный ниже код почти работает.ПОЧТИ.
Трабл: при запуске управление передается другому процессу => не вызывается EnumThreadWindows. КСТАТИ:
заметь, в объявлении КрэйтПроцесс я lpProcessAttributtes и lpThreadAttributes
заменил типом Long и передаю 0.
Код:
Код

Public Declare Function EnumThreadWindows Lib "user32" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As _
Long) As Long

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

Public Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal _
lpCommandLine As String, lpProcessAttributes As Long, lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal _
dwCreationFlags As Long, lpEnvironment As Long, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long

Public Type PROCESS_INFORMATION
       hProcess As Long
       hThread As Long
       dwProcessId As Long
       dwThreadId As Long
End Type

Public 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

Sub Main()
Dim OurThread As Long 'Нить запущенного процесса
Dim retval As Long 'Возвращаемое значение
Dim si As STARTUPINFO, pi As PROCESS_INFORMATION 'Структуры
si.cb = Len(si)
Dim AppName As String 'Имя приложения
AppName = "C:\CALC.EXE"
retval = CreateProcess(AppName, vbNullString, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&,
vbNullString, si, pi) 'Запускаем приложение
If retval = 0 Then Exit Sub 'Если произошла ошибка, выходим
EnumThreadWindows pi.dwThreadId, AddressOf EnumFunc, ByVal 0& 'Передаём указатель на EnumFunc Виндам
End Sub

Public Function EnumFunc(ByVal hwnd As Long, ByVal lParam As Long) As Long
SetWindowPos hwnd, 0, 0, 0, 1000, 1000, 0
End Function

Подскажите, кто-нить, КАК ЗАПУСТИТЬ ПРОЦЕСС БЕЗ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

Это сообщение отредактировал(а) Run-time error - 5.2.2005, 22:26
PM   Вверх
kb-nn
Дата 7.2.2005, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



слушайте.
вроде бы работает.
спасибо!
но неправильно отсчитываются координаты.
нельзя ли сделать так, чтобы они были абсолютными, а не относительно дочернего окна?
PM MAIL ICQ   Вверх
__Sergey__
Дата 7.2.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 21.1.2005

Репутация: 4
Всего: 4



Используй ф-ции преобразования координат, сейчас точно нескажу,
но примерно ClientToScreen and ScreenToClient

PM MAIL   Вверх
kb-nn
Дата 10.2.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



ничего не получается.
PM MAIL ICQ   Вверх
Naghual
Дата 10.2.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Пересчитывай новое положение учитывая положение родительского окна


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
Дата 10.2.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Короче если выйдет перешли исходники мне на мыло pls. Всё равно считай отчасти это мои исходники smile smile
PM   Вверх
kb-nn
Дата 14.2.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



дело в том, что я не очекнь понял функцию ClientToScreen.
она берет координаты, и что дальше?
а возвращает лишь успешен ли результат...
я не понимаю...




вы меня простите....

PM MAIL ICQ   Вверх
Guest
Дата 14.2.2005, 15:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Возвращает (изменяет) в переданную тобой структуру POINT.
  Вверх
kb-nn
Дата 15.2.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



я делаю вот так
Код

Private Type POINTAPI
   x As Long
   y As Long
End Type

Dim pa1 As POINTAPI
Dim pa2 As POINTAPI
pa1.x = 0
pa1.y = 0
pa2.x = 2 * Screen.Width / 3
pa2.y = Screen.Height
pa1 = ClientToScreen(hwnd, pa1)
pa2 = ClientToScreen(hwnd, pa2)
SetWindowPos hwnd, 0, pa1.x, pa1.y, pa2.x, pa2.y, 0

и при этом хочу, чтобы окно занимало две трети экрана
PM MAIL ICQ   Вверх
Naghual
Дата 15.2.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



pa2.x = 2 * ((Screen.Width / Screen.TwipsPerPixelX) / 3)
И не нужно никаких ClientToScreen

Это сообщение отредактировал(а) Naghual - 15.2.2005, 14:37


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
kb-nn
Дата 15.2.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



не работает smile
PM MAIL ICQ   Вверх
Naghual
Дата 15.2.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Ну так и ЧТО не работает?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
kb-nn
Дата 15.2.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



ну не в том месте окно открывается.


PM MAIL ICQ   Вверх
Exception
Дата 15.2.2005, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



А ты проверь Pointapi. Может данные изменились. Функция берет твои коорд. а в той же переменной возвр screen
PM   Вверх
Гость___Sergey__
Дата 15.2.2005, 17:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Когда я двигал оконца, то использовал вместо SetWindowPos,
MoveWindow. С ней получалось.
  Вверх
Exception
Дата 15.2.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Цитата(Run @ 15.2.2005, 17:55)
А ты проверь Pointapi. Может данные изменились. Функция берет твои коорд. а в той же переменной возвр screen

Простите 3ю страницу не заметил smile
Добавлено @ 18:51
Цитата
использовал вместо SetWindowPos,
MoveWindow. С ней получалось.

Вполне логично. В SetWPos есть парам. hwndInsertAfter а в moveWindow его нет. А нам он и не нужен smile

PM   Вверх
kb-nn
Дата 22.3.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



слушайте, простите, ну почему у меня не работает....

Option Explicit
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long

Public Declare Function EnumThreadWindows Lib "user32" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As _
Long) As Long

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

Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Public Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal _
lpCommandLine As String, lpProcessAttributes As Long, lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal _
dwCreationFlags As Long, lpEnvironment As Long, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long

Public Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type


Public 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

Public Type POINTAPI
x As Long
y As Long
End Type

Sub Main()
Dim OurThread As Long 'Íèòü çàïóùåííîãî ïðîöåññà
Dim retval As Long 'Âîçâðàùàåìîå çíà÷åíèå
Dim si As STARTUPINFO, pi As PROCESS_INFORMATION 'Ñòðóêòóðû
si.cb = Len(si)
Dim AppName As String 'Èìÿ ïðèëîæåíèÿ
AppName = "C:\WINDOWS\EXPLORER.EXE"
retval = CreateProcess(AppName, vbNullString, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, _
vbNullString, si, pi) 'Çàïóñêàåì ïðèëîæåíèå
If retval = 0 Then Exit Sub 'Åñëè ïðîèçîøëà îøèáêà, âûõîäèì
EnumThreadWindows pi.dwThreadId, AddressOf EnumFunc, ByVal 0& 'Ïåðåäà¸ì óêàçàòåëü íà EnumFunc Âèíäàì
End Sub

Public Function EnumFunc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim pa1 As POINTAPI
Dim pa2 As POINTAPI
pa1.x = 0
pa1.y = 0
pa2.x = 2 * ((Screen.Width / Screen.TwipsPerPixelX) / 3)
pa2.y = Screen.Height '/ Screen.TwipsPerPixelY
MoveWindow hwnd, pa1.x, pa1.y, pa2.x, pa2.y, True
End Function
Добавлено @ 11:37
вот, лучше так. извиняюсь. для удобства чтения

Код

Option Explicit
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long

Public Declare Function EnumThreadWindows Lib "user32" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As _
Long) As Long

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

Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Public Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal _
lpCommandLine As String, lpProcessAttributes As Long, lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal _
dwCreationFlags As Long, lpEnvironment As Long, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long

Public Type PROCESS_INFORMATION
       hProcess As Long
       hThread As Long
       dwProcessId As Long
       dwThreadId As Long
End Type


Public 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

Public Type POINTAPI
    x As Long
    y As Long
End Type

Sub Main()
Dim OurThread As Long 'Íèòü çàïóùåííîãî ïðîöåññà
Dim retval As Long 'Âîçâðàùàåìîå çíà÷åíèå
Dim si As STARTUPINFO, pi As PROCESS_INFORMATION 'Ñòðóêòóðû
si.cb = Len(si)
Dim AppName As String 'Èìÿ ïðèëîæåíèÿ
AppName = "C:\WINDOWS\EXPLORER.EXE"
retval = CreateProcess(AppName, vbNullString, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, _
vbNullString, si, pi) 'Çàïóñêàåì ïðèëîæåíèå
If retval = 0 Then Exit Sub 'Åñëè ïðîèçîøëà îøèáêà, âûõîäèì
EnumThreadWindows pi.dwThreadId, AddressOf EnumFunc, ByVal 0& 'Ïåðåäà¸ì óêàçàòåëü íà EnumFunc Âèíäàì
End Sub

Public Function EnumFunc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim pa1 As POINTAPI
Dim pa2 As POINTAPI
pa1.x = 0
pa1.y = 0
pa2.x = 2 * ((Screen.Width / Screen.TwipsPerPixelX) / 3)
pa2.y = Screen.Height '/ Screen.TwipsPerPixelY
MoveWindow hwnd, pa1.x, pa1.y, pa2.x, pa2.y, True
End Function

PM MAIL ICQ   Вверх
kb-nn
Дата 22.3.2005, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



хочу, чтобы окно занимало левые две трети экрана. (и левый верх был в левом верхнем углу)
PM MAIL ICQ   Вверх
Guest
Дата 23.3.2005, 16:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Попробуй передать необходимые параметры окна
в STARTUPINFO, а потом CreateProcess.
И я так подозреваю, не
Код

AppName = "C:\WINDOWS\EXPLORER.EXE"

а
Код

AppName = "C:\WINDOWS\IEXPLORE.EXE"


  Вверх
Guest
Дата 23.3.2005, 16:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Или так
Код

AppName = "C:\Program Files\Internet Explorer\IEXPLORE.EXE"

  Вверх
kb-nn
Дата 23.3.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



но окно открывается!
только не в том месте.
и в ширину оно занимает не 2/3, а больше


так?

Код

Public pa1 As POINTAPI
Public pa2 As POINTAPI

Sub Main()
Dim OurThread As Long 'Íèòü çàïóùåííîãî ïðîöåññà
Dim retval As Long 'Âîçâðàùàåìîå çíà÷åíèå
Dim si As STARTUPINFO, pi As PROCESS_INFORMATION 'Ñòðóêòóðû
si.cb = Len(si)
Dim AppName As String 'Èìÿ ïðèëîæåíèÿ
AppName = "C:\WINDOWS\EXPLORER.EXE"

pa1.x = 0
pa1.y = 0
pa2.x = 2 * ((Screen.Width / Screen.TwipsPerPixelX) / 3)
pa2.y = Screen.Height '/ Screen.TwipsPerPixelY
si.dwX = pa1.x
si.dwY = pa1.y
si.dwXSize = pa2.x
si.dwYSize = pa2.y

retval = CreateProcess(AppName, vbNullString, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&, _
vbNullString, si, pi) 'Çàïóñêàåì ïðèëîæåíèå
If retval = 0 Then Exit Sub 'Åñëè ïðîèçîøëà îøèáêà, âûõîäèì
EnumThreadWindows pi.dwThreadId, AddressOf EnumFunc, ByVal 0& 'Ïåðåäà¸ì óêàçàòåëü íà EnumFunc Âèíäàì
End Sub

Public Function EnumFunc(ByVal hwnd As Long, ByVal lParam As Long) As Long
    MoveWindow hwnd, pa1.x, pa1.y, pa2.x, pa2.y, True
End Function


увы, всё тоже самое....
PM MAIL ICQ   Вверх
Гость___Sergey__
Дата 23.3.2005, 17:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вставь до вызова EnumThreadWindows
Sleep 1000, можеть меньше, может больше. Пробуй методом тыка.

По моему окно не успевает создаться, а ты уже его энумить собрался smile
  Вверх
valex13
Дата 8.4.2005, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 29.1.2003
Где: Иркук. область, г . Иркутск

Репутация: 1
Всего: 1



Можно воспользоваться универсальной функцией поиска окна. Она описана в MSDN
Выкладываю:
Код

Declare Function GetDesktopWindow Lib "user32" () As Long
Declare Function apiGetWindow Lib "user32" Alias _
         "GetWindow" (ByVal hwnd As Long, ByVal wCmd As L

Public Const GW_HWNDNEXT = 2
Public Const GW_CHILD = 5
Public Const GWW_ID = (-12)
   
Public Const GWL_STYLE = (-16)
Public Const GWL_EXSTYLE = -20
Public Const GW_OWNER = 4


Function FindWindowLike(hWndArray() As Integer, ByVal hWndStart As _
      Integer, WindowText As String, Classname As String, ID) As Integer
   Dim hwnd As Integer
   Dim sWindowText As String
   Dim sClassname As String
   Dim sID
   Dim r As Integer
   ' Hold the level of recursion:
   Static level As Integer
   ' Hold the number of matching windows:
   Static iFound As Integer

   ' Initialize if necessary:
   If level = 0 Then
      iFound = 0
      ReDim hWndArray(0 To 0)
      If hWndStart = 0 Then hWndStart = GetDesktopWindow()
   End If

   ' Increase recursion counter:
   level = level + 1

   ' Get first child window:
   hwnd = apiGetWindow(hWndStart, GW_CHILD)

   Do Until hwnd = 0
      DoEvents ' Not necessary
      ' Search children by recursion:
      r = FindWindowLike(hWndArray(), hwnd, WindowText, Classname, ID)

      ' Get the window text and class name:
      sWindowText = Space(255)
      r = apiGetWindowText(hwnd, sWindowText, 255)
      sWindowText = Left(sWindowText, r)
      sClassname = Space(255)
      r = apiGetClassName(hwnd, sClassname, 255)
      sClassname = Left(sClassname, r)

      ' If window is a child get the ID:
      If apiGetParent(hwnd) <> 0 Then
         r = apiGetWindowWord(hwnd, GWW_ID)
         sID = CLng("&H" & Hex(r))
      Else
         sID = Null
      End If

      ' Check that window matches the search parameters:
      If sWindowText Like WindowText And sClassname Like Classname Then
         If IsNull(ID) Then
            ' If find a match, increment counter and add handle to array:
            iFound = iFound + 1
            ReDim Preserve hWndArray(0 To iFound)
            hWndArray(iFound) = hwnd
         ElseIf Not IsNull(sID) Then
            If sID = CLng(ID) Then
               ' If find a match increment counter and add handle to array:
               iFound = iFound + 1
               ReDim Preserve hWndArray(0 To iFound)
               hWndArray(iFound) = hwnd
            End If
         End If
      End If

      ' Get next child window:
      hwnd = apiGetWindow(hwnd, GW_HWNDNEXT)
   Loop

   ' Decrement recursion counter:
   level = level - 1

   ' Return the number of windows found:
   FindWindowLike = iFound
End Function


А искать окно можно так:
Код

      Static hWnds() As Integer
      r = FindWindowLike(hWnds(), 0, "Какой-то заголовок*", "*", Null)
      If r > 0 Then
            MsgBox "Нашел - " & CStr(hWnds(r))
      end if


Таким образом, ты можешь найти hWND обоих окон. В качестве параметра поиска окна по заголовку передай *FileName1 и *FileName2, а затем воспользуйся API функции для изменения размеров.
Однако, для этого нужно знать размеры экрана. Расширение!
PM MAIL ICQ   Вверх
kb-nn
Дата 18.4.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



что- то я ничего не понимаю.
у меня вообще, как будто от функции MoveWindow толку не видно.
что бы я ей не давал, она ничего не меняет...
PM MAIL ICQ   Вверх
Exception
Дата 19.4.2005, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Ну ты попробуй с разными hwnd, эйчвинд вэбэ попробуй...
Может и правда
Цитата
По моему окно не успевает создаться, а ты уже его энумить собрался


PM   Вверх
kb-nn
Дата 19.5.2005, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



что- то я не понял.
что значит с разными hwnd?
PM MAIL ICQ   Вверх
Гость_Run-time Error
Дата 19.5.2005, 15:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну может у тебя конкретно с этим окном не выходит smile
а с окном vb может выйти. тогда будешь знать, где ошибка smile
  Вверх
__Sergey__
Дата 19.5.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 21.1.2005

Репутация: 4
Всего: 4



Ну ты и растянул эту бадягу smile
Я уже пробовал. Вставь Sleep, как я выше писал и расслабся.
Добавлено @ 16:01
Со Sleep все работает smile
PM MAIL   Вверх
kb-nn
Дата 24.5.2005, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



со sleep у меня окно сворачивается через указанное время.
PM MAIL ICQ   Вверх
Exception
Дата 24.5.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



__Sergey__,
kb-nn,
просто сраыните друг с другом свой код и все smile
PM   Вверх
kb-nn
Дата 5.5.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.12.2003
Где: Нижний Новгород

Репутация: нет
Всего: 1



простите, я всё о своем, о наболевшем....
у меня начало работать, но SetWindowPos срабатывает не для всех файлов.
(вручную для них размеры меняются и перемещаются без проблем)

может у вас появится мысля- от чего это может зависеть?

Код

Option Explicit
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private 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
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As String, 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 GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type

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

Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Const NORMAL_PRIORITY_CLASS = &H20&
Const INFINITE = -1&
Const SW_SHOWNORMAL = 1
Const GW_HWNDNEXT = 2

Dim workArea As RECT

Function InstanceToWnd(ByVal target_pid As Long) As Long
Dim test_hwnd As Long, test_pid As Long, test_thread_id As Long
'Find the first window
test_hwnd = FindWindow(ByVal 0&, ByVal 0&)
Do While test_hwnd <> 0
'Check if the window isn't a child
If GetParent(test_hwnd) = 0 Then
'Get the window's thread
test_thread_id = GetWindowThreadProcessId(test_hwnd, test_pid)
If test_pid = target_pid Then
InstanceToWnd = test_hwnd
Exit Do
End If
End If
'retrieve the next window
test_hwnd = GetWindow(test_hwnd, GW_HWNDNEXT)
Loop
End Function

Private Sub Main()


' константы для wFlags
Const SWP_FRAMECHANGED = &H20 ' The frame changed: send WM_NCCALCSIZE
Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Const SWP_HIDEWINDOW = &H80
Const SWP_NOACTIVATE = &H10
Const SWP_NOCOPYBITS = &H100
Const SWP_NOMOVE = &H2
Const SWP_NOOWNERZORDER = &H200 ' Don't do owner Z ordering
Const SWP_NOREDRAW = &H8
Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H4
Const SWP_SHOWWINDOW = &H40

' константы для hWndInsertAfter
Const HWND_BOTTOM = 1
Const HWND_BROADCAST = &HFFFF&
Const HWND_DESKTOP = 0
Const HWND_NOTOPMOST = -2
Const HWND_TOP = 0
Const HWND_TOPMOST = -1

Const SPI_GETWORKAREA = 48

Dim Pid1 As Long, Pid2 As Long
Dim wr As Long, wb As Long
Dim hWnd1 As Long, hwnd2 As Long
Dim AppName As String
Dim sFinal As String
Dim s As String

Call SystemParametersInfo(SPI_GETWORKAREA, vbNull, workArea, 0)

wr = workArea.Right
wb = workArea.Bottom

AppName = "D:\1.xls"
sFinal = AppName
'If (Right(AppName, 4) <> ".exe") Then
s = String$(255, 0)
FindExecutable sFinal, "", s
sFinal = Mid$(s, 1, InStr(1, s, Chr$(0)) - 1) & " """ & sFinal & """"
'End If

Pid1 = Shell(sFinal, vbNormalFocus)
hWnd1 = InstanceToWnd(Pid1)

'MsgBox "Идентификатор процесса: " & Pid1 & vbCrLf _
& "Дескриптор окна:" & hWnd1 & vbCrLf

SetWindowPos hWnd1, HWND_TOPMOST, 0, 0, 2 * wr / 3, wb, SWP_SHOWWINDOW
'MoveWindow hWnd1, 0, 0, 2 * wr / 3, wb, 1

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.