Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Стартовое положение на экране Добавлено: 18.04.05 14:59  

Автор вопроса:  AlexF
Привет всем! Такая проблема возникла:
Есть система со сдвоеным монитором. И программа стороннего разработчика. Так при запуске оной, она стартует как раз посредине двух экранов. При перетаскивании на один экран настроики не запоминаются. Они прошиты в программе. Вопрос:
как заставить окна стартовать как мне надо? Проблема усугубляется тем, что нет MDI формы.
Подскажите код если есть у кого, plz.

Ответить

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

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 18.04.05 15:07
Кода нет, но есть предложение: Висит програма и отлавливает хендлы всех нововсплывающих окон. Как только появися новый (придётся все запоминать) она просто перетаскивает его, кажется API фунуция SetWindowPlacement.
Только могут быть глюки так как она требует точно указать размер окна, но ничего страшного, Он получается др. АПИ функцией - GetWindowRect что ли не помню :-)
 ну и вроде всё. Щас если мож код не кинет его, дык напишем :)

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #2 Добавлено: 18.04.05 15:10
Нафиг следить за всеми?
Просто сделать ярлык для этой проги, но пусть этот ярлык указывает на твою прогу, которая
CreateProcess
WaitForInputIdle
EnumThreadWindows
MoveWindow
CloseHandle

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 18.04.05 15:21
2GSerg
Слушай, спасибо ты меня носом ткнул А сожет так:
получать заголовки или лучше искать окно с заголовкам через FindWindow и когда хендл есть(а значит и окно есть) тогда и двигать двигать?
Ещё может быть баг если прога запускается повторно. Тогда делаем таймер примерно со следующим содержанием:

таймер_таймер()
дим Б, как логическое
если (не Б) и окно_есть то
  Б=истина
  двигать окно
енд иф
если Б и окна_нет то
  Б=ложь
енд иф
енд саб;

таким образом будем двигать окно только когда оно появится на экране. Можно сделать перед двигом Sleep 100

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #4 Добавлено: 18.04.05 15:33
Ну если очень хочется следить, то ставь хук WH_CBT, будешь получать сообщения о создании новых окон в системе.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 18.04.05 15:42
Ну, можно и мне кажется что всё таки можно попроще. Нафик хук? по-моему то подобие кода что я написал должно работать :-)

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #6 Добавлено: 18.04.05 15:47
Ну, будет работать. Висеть и работать, работать, работать... А зачем, если требуется единовременное действие? :)

Ответить

Номер ответа: 7
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #7
Добавлено: 18.04.05 16:38
Ты прав, действие нужно единовременное, что я и пытался организовать в вышеприведённом подобии кода :)
это на случай если прога запустится повторно. Всё равно придётся таймер гонять по кругу. Если только сделать так чтобы прога закрылась после первого запуска проги, дык тоже не проблема.

Ответить

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



Вопросов: 20
Ответов: 113
 Профиль | | #8 Добавлено: 18.04.05 22:38
Eto vse verno. Problema v tom, chto zagolovki menyayutsya. I ih ochen'-ochen' mnogo. Vopros, kak otsledit' vse okna otnosyasheesia k programme.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #9
Добавлено: 18.04.05 22:41
Тогда надо или действовать по сценарию #1 или узнавать имя экзешника каждого окна и двигать если он будет тем самым. Как сделать... хм.. хороший вопрос. А где все??? Эээй, ребята, как такое замутить? Мне тоже интерестно!
Наверное GSerg изначально был прав :-)

Ответить

Страница: 1 |

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



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