|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 30, 2004 03:30:25 Короче, что-то прога пашет только в win98, а в 2k окно не масштабируется и позиция не устанавливается.. Что я не учёл?
format PE GUI 4.0
entry start
include '%fasminc%\win32a.inc'
section '.code' code readable executable
align 4
start:
mov edi, sBuff
invoke GetWindowsDirectory, edi, 260
test eax, eax
jz @exit
invoke lstrcat, edi, szFileName
test eax, eax
jz @exit
xor esi, esi
mov ebx, 5
align 4
@@:
invoke CreateProcess, esi, edi, esi, esi, esi, NORMAL_PRIORITY_CLASS,\
esi, esi, StartupInfo, ProcessInfo
test eax, eax
jz @exit
invoke CloseHandle, [ProcessInfo.hThread]
invoke CloseHandle, [ProcessInfo.hProcess]
dec ebx
jnz @B
@exit:
invoke ExitProcess, esi
section '.data' data readable writeable
szFileName db '\notepad.exe',0
StartupInfo:
cb dd sizeof.STARTUPINFO
lpReserved dd NULL
lpDesktop dd NULL
lpTitle dd NULL
dwX dd 5
dwY dd 5
dwXSize dd 400
dwYSize dd 300
dwXCountChars dd 0
dwYCountChars dd 0
dwFillAttribute dd 0
dwFlags dd STARTF_USESHOWWINDOW or STARTF_USEPOSITION or STARTF_USESIZE
wShowWindow dw SW_SHOW
cbReserved2 dw 0
lpReserved2 dd NULL
hStdInput dd 0
hStdOutput dd 0
hStdError dd 0
section '.udata' readable writeable
ProcessInfo PROCESSINFO
sBuff rb 260
section '.idata' import data readable
library kernel32,'KERNEL32.DLL'
include '%fasminc%\APIA\KERNEL32.INC' |
|
|
Дата: Сен 30, 2004 04:15:58 Asterix
PS если еще добавить неудачный, на мой взгляд, выбор заголовка, то этой теме самое место в WASM.HELHEIM |
|
|
Дата: Сен 30, 2004 04:24:10 · Поправил: Asterix q_q 2) ничего подобного, у меня он есть и в Windows директории, да скорее и у тебя тоже.. 1),3) разве я сказал что блокнот не запускается, я говорил что не выставляются размеры и положение окна notepad'а в HELHEIM ему не место ;-) |
|
|
Дата: Сен 30, 2004 06:00:54 Asterix , да скорее и у тебя тоже У меня в winnt нет, возможно, я его удалил. Посмотрел на соседней xp’шке – действительно два раза, и еще раз в dllcache. разве я сказал что блокнот не запускается, я говорил что не выставляются размеры Хорошо. Тогда так. В реестре w2k есть ключик HKEY_CURRENT_USER\Software\Microsoft\Notepad, а в нем есть iWindowPosX, iWindowPosY, iWindowPosDX, iWindowPosDY. |
|
|
Дата: Сен 30, 2004 06:19:00 · Поправил: Asterix q_q > У меня в winnt нет, возможно, я его удалил. У тебя винда неправильная, потому что я когда-то в какой-то из двух Windows 2k или XP пытался удалить notepad.exe, но он всё время появлялся снова, хотя может это был calc.exe, точно не помню. Если его там не будет могут быть проблемы с совместимостью с прогами написанными для win98 и вызывающими notepad.exe > Хорошо. Тогда так. В реестре w2k есть ключик HKEY_CURRENT_USER\Software\Microsoft\Notepad Спасибо. Я догадывался что ключик есть раз уж блокнот запоминает позицию, но всё-же это неправильно, должен же быть приоритет параметров передаваемых через структуру STARTUPINFO, перед теми параметрами что содержаться в реестре.. |
|
|
Дата: Сен 30, 2004 06:54:07 Asterix должен же быть приоритет параметров передаваемых через структуру STARTUPINFO Ты, в своих программах, хоть раз использовал GetStartupInfo для получения координат окна? Часто ли используешь overlapped window в комплекте с CW_USEDEFAULT? |
|
|
Дата: Сен 30, 2004 11:20:51 А если попробовать запустить блокнот без поиска в виндовой папке, а просто "notepad"? ShellExecuteEx спокойно запускает блокнот и не жужжит. Вобще, все, что лежит в виндовой или системной папках, запускается без указания пути - это стандартный путь поиска проги. Но вот насчет CreateProcess не знаю, может он не ищет автоматом.. В любом случае, если надо запустить прогу и все, то лучше юзать ShellExecute (кстати, запускает не только проги). |
|
|
Дата: Сен 30, 2004 11:48:15 n0p Речь не шла о простом запуске, нужно было запустить с заданными, вполне конкретными, параметрами окна, мне показалось что ShellExecute этого не умеет. Насколько я помню ShellExecute тоже сводится к CreateProcess.. может и ошибаюсь, смотреть лень сейчас. q_q > Ты, в своих программах, хоть раз использовал GetStartupInfo для получения координат окна? По-моему есть разница я в своих программах или MS, у них должно быть всё правильно и всё учитываться и уж тем более учитываться что структура STARTUPINFO содержит информацию о положении окна. |
|
|
Дата: Окт 1, 2004 03:58:22 Asterix По-моему есть разница я в своих программах или MS Только не говори, что все программы от MS, кроме блокнота, учитывают все нюансы. Там тоже люди работают. Почему они должны быть лучше тебя? Например, мне нравится, когда программа помнит "свое место". PS и все таки WASM.HELHEIM :-) |
|
|
Дата: Окт 1, 2004 04:39:17 q_q > Например, мне нравится, когда программа помнит "свое место". Пусть помнит, если структура STARTUPINFO содержит нули в координатных и размерных параметрах, иначе пусть берет параметры из этой структуры, но не из реестра. |
|
|
Дата: Окт 1, 2004 05:40:18 Asterix если структура STARTUPINFO содержит нули в координатных и размерных параметрах Вот и ты ошибаешься (а хочешь от MS'овцев правильности). Сначала надо проверять STARTUPINFO.dwFlags на наличие STARTF_USEPOSITION и STARTF_USESIZE. Пусть помнит ... иначе пусть берет ... Imho только личным примером ты сможешь убедить сообщество программистов в жизнеспособности такого подхода. |
|
|
Дата: Окт 1, 2004 06:13:53 q_q > Вот и ты ошибаешься (а хочешь от MS'овцев правильности) Я не ошибаюсь, я знаю что нужно сначала флаги проверять, просто я не стал глубоко вдаваться в описание процедуры проверки и немного утрировал её ;-) > Imho только личным примером ты сможешь убедить сообщество программистов в жизнеспособности такого подхода. Смысла нет, я же не пишу системное приложение, которое должно учитывать потребности любого пользователя, и программиста в том числе, пусть об этом MS заботится. Короче это у них баг и точка >:-) |
|
|
Дата: Окт 1, 2004 06:37:18 Asterix я же не пишу системное приложение ... это у них баг Легко обвинять других. Покажи всему миру как правильно писать системное приложение, возможно MS задумается, изменит свой подход и будет выпускать только качественное ПО, обладающее настройками, удовлетворяющими любые потребности любых пользователей. :-) |
|
|
Дата: Окт 1, 2004 10:58:00 Вы, должно быть, шутите! Какие еще STARTUPINFO? Лично я об этом первый раз слышу, а люди, которые пишут программы путем мышевожения по экрану и тыканья в три кнопки (а таких 75%) вобще не поймут о чем речь. А ведь именно они задают моду на программы, а не всякие дядьки из М$. Ну и что, что где-то в спецификации что-то написано? Никто их все-равно не читает. Хранить настройки в инишнике тоже не рекомендуется - для этого реестр есть. Но тем не менее большинство людей пользуются инишниками, потому что это удобнее, проще, а еще они не знают как в реестре гадить правильно. Ну что их за это, расстрелять теперь? Гринпис не одобрит. Так что не тисипите айпи и делайте все так, чтобы только работало (это я про запуск блокнота). Естественно, что в более серьезных прогах следует начихать на моду и советы пьяных товарищей и делать все по уму, а тут можно и не надо. |
|
|
Дата: Окт 1, 2004 12:13:23 n0p Хранить настройки в инишнике тоже не рекомендуется Imho с точки зрения кроссплатформенности нет ничего лучше текстового файла с настройками. более серьезных прогах следует Ознакомь, хотя бы меня, с критериями, определяющими серьезность программы. Imho если в мелочах привык "делать на отстаньте", то и в серьезном поведешь себя так же. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081 |