|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 2, 2004 09:32:00 Не могу понять, почему вот этот вот код не работает? .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .data lpText db "Text",0 lpCaption db "Caption",0 .code Main PROC mov cx, 10000 ;jcxz prcEND Cykl: invoke ShowWindow,cx,SW_HIDE loop Cykl ;prcEND: invoke MessageBox,NULL, addr lpText, addr lpCaption, MB_OK invoke ExitProcess,0 Main ENDP end Main |
|
|
Дата: Окт 2, 2004 09:59:15 Уважаемый... Это нормальная вещь... Когда ты используешь ShowWindow используют handle Window и можно иметь один... Ты дольжен (на) создавать окно чтобы иметь его "Эндел"... invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\ WS_CAPTION or WS_SYSMENU ,Wtx,Wty,Wwd,Wht,NULL,NULL,\ hInst,NULL mov hwnd,eax invoke ShowWindow,hwnd,SW_HIDE Я увидел,что Ты используешь только register cx take ecx Другая вещь:всё время попробуйте использовать hWnd для MessageBox и не NULL Думаю, что Ты смогли бы продолжить... Желаю хорошых успехов... С уважением, Gerard ( Жерар ) ----------------- |
|
|
Дата: Окт 2, 2004 09:59:51 А я не понял, что ты сделать пытаешься? BOOL ShowWindow(
HWND hWnd, // handle of window
int nCmdShow // show state of window
);
Поэтому причем там счетчик первым параметром, я не очень понимаю.. |
|
|
Дата: Окт 2, 2004 10:07:59 Пытается простым перебором 10000 хендлов все окна скрыть на удачу :) Не стоит этого делать, в стэк помещается cx - 2 байта, а не ecx - 4 байта. Лучше использовать FindWindow. |
|
|
Дата: Окт 2, 2004 10:18:09 Теперь Я начинаю понять, что ты сделать хотел... SteelRat тебе дал хорошый решение... API FindWindow есть лучше...и легкий больше чтобы использовать... Желаю хорошых успехов... С уважением, Gerard ( Жерар ) ----------------- |
|
|
Дата: Окт 2, 2004 10:23:34 Я хотел чтобы он сам ответил. Никогда не надо давать ответ на вопрос, если хочешь научить вопрошающего чему-то. Необходимо подвести его к ответу, но так чтобы он сам на вопрос ответил. Это дает стимул к изучению и чувство удовлетворения от своей победы. Есть такая наука: Психология. :) |
|
|
Дата: Окт 2, 2004 10:24:15 Нет естественно это не кусок моей программы, стало просто интерестно будет ли рабоать или нет, как оказалось не будет, конечноже лудше использовать FindWindow, но это только тогда когда известен либо класс окна, либо заголовок, а как быть если и заголовка не знаешь и не знаешь класса, мне говорили что надо исплользовать EnumWindow, вот только не могу сделать на масм...? |
|
|
Дата: Окт 2, 2004 10:40:19 freeloader попробуй поити загрузить этот Файл для API...( на VisualBasic)... http://users.chello.be/cr27630/3.7/agsetup.exe http://www.allapi.net/vbtutor/tutmain.shtml на программу agsetup.exe ты наиду много примеров для API... Желаю хорошых успехов... С уважением, Gerard ( Жерар ) ----------------- |
|
|
Дата: Окт 2, 2004 10:52:19 n0p Согласен - психология. Как-то работал в интернет-кафе. Занимался подобными делишками кроме компа ничего небыло и инет по лимиту :( Сам копал, искал, итог - напишу подобный софт "с закрытыми глазами" :) |
|
|
Дата: Окт 2, 2004 11:24:54 Api Guide у меня есть..., что же касается VB, то написал все работает, только код не со скрытием, а просто поменять текст: Private Sub Command1_Click() Dim i As Integer For i = 0 To 10000 Call SetWindowText(i, "EXAMPLE") Next i End Sub Что же касается, асма, то понятно что cx 2 байта, значить ecx 4 байта?, и такая структура тоже не работает... :( не могу понять принципа, почему на VB все хорошо, а на masm все плохо? mov eax,0 .repeat add eax,1 ;invoke ShowWindow,eax,SW_HIDE invoke SetWindowText,eax, addr lpString .until eax==10000 invoke ExitProcess,0 или может, я что то серьезно недопонимаю? |
|
|
Дата: Окт 2, 2004 11:53:30 Я вижу и пойму твоа прога... Это не плохо...и ялик... На MASM нормально она дольжна работать... Всех мои Окон -- закрыты теперь Я дольжен передавать старт на моём ПК... Хорошые успехы для Меня... С уважением, Gerard ( Жерар ) ----------------- |
|
|
Дата: Окт 2, 2004 12:08:09 freeloader Ты не парься, замени cx на ebx, edi или esi ;-) |
|
|
Дата: Окт 2, 2004 13:49:21 freeloader Api - функции изменяют состояние eax, edx, ecx. Т.е. твоя переменная цикла после вызова API совсем не та, что была до вызова. И цикл будет работать до тех пор, пока случайным образом после ShowWindow в eax окажется 10000. Вероятность этого оч. близка к нулю. И ещё момент: откуда уверенность, что в диапазоне 0 - 10000 найдётся хотя бы один валидный хэндл окна, чтобы вызов ShowWindow мог успешно завершиться? Скорее всего ни одно из окон в системе не будет иметь hWnd в этом диапазоне. Вот и получается, что ты скрываешь окна, которых нет. |
|
|
Дата: Окт 2, 2004 14:45:11 freeloader Есть же так какие-то функции для работы с цепочкой окон. Одна дает хендл Десктопа и другая ссылку на следующее окно. Единственно там надо аккуратно идти по цепочке, т.к. она динамически меняется. Я на VB это гонял, могу поискать, но потом на FindWindow переключился. |
|
|
Дата: Окт 2, 2004 15:40:23 Странно..., я почему то думал, что есил АПИ ничего не возвращает - значит в регист ничего не заноситься, а по поводу того что окна не могут быть в диапозоне от 0 до 10000 то это зря, так как я седня провернул тот вбшный код, который находиться чуть выше, который устанавливает заголовки окон, так результат, почти все... Всем просто большое, нет просто огромное спасибо, очень приятно знать, что есть те люди которые могут тебе помочь!!! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.068 |