Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: bomzzz
Дата сообщения: 12.08.2010 07:09
у меня вопрос такой возможно идиотский. пособий чтоб окошко нарисовать много, в основном тупые, но понять суть можно методом тыка. а вот куда потом код программы то вставлять? ну код который суть программы выполняет.
если в процедуру обработки - окно зависает напрочь
если в прроцедуру окна - жутко медлено работает
второй процесс запустить - ну точно не так делается
дочернее окно запустить консольное невидимое? или может какая другая апи фукция есть которая быстрее сообщения обрабатывает... может посылать сообщения окну на выполнение следующего цикла из цикла???

надоело в слепую тыкаться как делать то надо?

Добавлено:
посылать сообщения тоже не получилось - окно вообще не появляется, и программа останавливается на пол дороги
Автор: aspis
Дата сообщения: 12.08.2010 08:52

Цитата:
надоело в слепую тыкаться как делать то надо?

В. Юров, Assembler, глава 16 Создание Windows-приложений на ассемблере - описано программирование оконных и консольных приложений
Уроки Iczelion'а, http://wasm.ru/publist.php?list=1 - программирование оконных приложений
В принципе достаточно, что бы дальше самому разбираться, полезное можно найти в
Ю. Магда, Ассемблера, разработка и оптимизация Windows-приложений
В. Пирогов, Ассемблер для Windows
Автор: bomzzz
Дата сообщения: 12.08.2010 09:13
макулатура

Добавлено:
из всех произведений единственное достойное внимания - труды кулакова, потому что он преподаватель в вузе, и не смотря на то что его труды грешат ошибками - он по крайней мере задумывается о тех кто его читает. остальные жуют сопли и расчитывают на читательскую телепатию.



Добавлено:
CreateThread - все понятно
Автор: aspis
Дата сообщения: 12.08.2010 11:19

Цитата:
надоело в слепую тыкаться как делать то надо?

То есть, вы не знаете ассемблера, под Windows с использованием WinAPI уж точно, но смело утверждаете, что эти книги

Цитата:
макулатура


Цитата:
из всех произведений единственное достойное внимания - труды кулакова, потому что он преподаватель в вузе, и не смотря на то что его труды грешат ошибками


Так что же вы хотите и чему хотите научится? Остается только одно вам посоветовать - первоисточник по разработке Windows-приложений - http://msdn.microsoft.com и программированию на ассемблере вообще - http://software.intel.com.
Ознакомитесь и задавайте уже конкретные нормальные вопросы, а не

Цитата:
у меня вопрос такой возможно идиотский

Автор: bomzzz
Дата сообщения: 12.08.2010 11:21
моск не парь, если вопросов не понимаешь, смотри картинку слушай пластинку
Автор: akaGM
Дата сообщения: 13.08.2010 12:44
оверпостер и флудер...
Автор: karakurt2
Дата сообщения: 13.08.2010 19:04
вот понравившаяся мне статья, каким-то боком касающаяся программирования на ассемблере

Moving to Windows Vista x64
Автор: bomzzz
Дата сообщения: 14.08.2010 00:12
сам нашел у меня в справочнике не все параметры были почему то, наверно из за того что это от фреймворка
[more]
почему то самая загадочная фукция и мало освещенная.

вот это: invoke SHBrowseForFolder

а вот это какая???


или надо самому эту кнопку дорисовать, но тогда как указать корнем рабочий стол и свернуть мой компьютер???
но тут видно что окна разные и по размеру кнопко и по растягиванию. иил может ее вообще надо самому рисовать, но такое окно во многих программах вроде встречается

Добавлено:
нет точно отдельная апи функция - растянул это окно на под экрана в одной программе, а потом открыл это окно в другой оно тоже растянутое - то есть класс один, а система сохранила размер окна

сам нашел brinfo.ulFlags, BIF_NEWDIALOGSTYLE
http://www.rsdn.ru/article/files/dotnet/bfdlg.xml
[/more]
Автор: bomzzz
Дата сообщения: 14.08.2010 09:07

а как сделать чтоб тут папка определнная открывалась??? ну тут просто возможности нет для поля такого. но в тоже время как то делается в некоторых программах
Автор: Abs62
Дата сообщения: 14.08.2010 10:42
bomzzz

Цитата:
ну тут просто возможности нет для поля такого

Как это нет? А pidlRoot в BROWSEINFO на что?

И вообще, это уже не по ассемблеру разговор, а по WinAPI.
Автор: bomzzz
Дата сообщения: 14.08.2010 11:42
ах ах ах не по ассемблеру.
[more]
менял значение pidlRoot от 0 до 26 кажется, но точно меньше 30. да это корневая папка, не работает с этим типами окна BIF_USENEWUI ;BIF_NEWDIALOGSTYLE, с ними может равняться только нулю, и главное это не папка по умолчанию а вообще корневая папка.



Добавлено:
если указать сюда смещениена строку пути будет ошибка

Добавлено:

Цитата:

Pointer to an item identifier list (an ITEMIDLIST structure) specifying the location of the "root" folder to browse from. Only the specified folder and its subfolders appear in the dialog box. This member can be NULL, and in that case, the name space root (the desktop folder) is used.


Добавлено:
разве это смещение на ИД папки, может так получится

Добавлено:
нет к ИД папки тоже никакого отношения не имеет. это число от 0 до примерно 30 при некоторых типах окон

Добавлено:
так что ответ не в тему
[/more]
Автор: Abs62
Дата сообщения: 14.08.2010 12:27
bomzzz

Цитата:
менял значение pidlRoot от 0 до 26 кажется, но точно меньше 30.

Наугад, что ли? Для этого есть SHParseDisplayName.
Но если тебе надо не ограничить диапазон поиска, а просто изначально выставить на определённую папку, делай callback функцию для SHBrowseForFolder, лови в ней BFFM_INITIALIZED и отправляй окну BFFM_SETSELECTION (или BFFM_SETEXPANDED, сам смотри) с искомой папкой.

Цитата:
так что ответ не в тему

А я сразу сказал, что это в тему по WinAPI.
Автор: bomzzz
Дата сообщения: 14.08.2010 12:40
попробую. почему на угад - 1 2 3 4 5... что тут угадывать

Добавлено:
если тут никто не ответит может и там спрошу. но пример на паскале мне не нужен
http://www.masm32.com/board/index.php тут лучше спросить сразу напишут код

Добавлено:
оказывается есть еще один параметр который можно опустить - как раз папка открываемая по умолчанию. на паскале (или делфи??) она называется root а на ассемблере как то по другому. наверно надо в библиотеках поискать, если она там вообще есть

Добавлено:
Windows.inc

Цитата:

BROWSEINFOA STRUCT
hwndOwner dd ?
pidlRoot dd ?
pszDisplayName dd ?
lpszTitle dd ?
ulFlags dd ?
lpfn dd ?
lParam dd ?
iImage dd ?
BROWSEINFOA ENDS
BROWSEINFO equ <BROWSEINFOA>

масм этого параметра не поддерживает.
http://www.rsdn.ru/article/files/dotnet/bfdlg.xml#E5AAC - если тут не врут конечно

Добавлено:
http://msdn.microsoft.com/en-us/library/bb762115(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb773205(v=VS.85).aspx
может врут а может не врут
Автор: Abs62
Дата сообщения: 14.08.2010 14:40
bomzzz

Цитата:
оказывается есть еще один параметр который можно опустить

Да нет такого параметра. Я же сказал, как это делается - через callback. И по ссылке на RSDN именно так и сделано.
Автор: bomzzz
Дата сообщения: 14.08.2010 23:34
http://www.manhunter.ru/assembler/236_tyuning_funkcii_shbrowseforfolder.html
нашел пример на фасме. теперь все понятно

Добавлено:
сделал

Добавлено:
szOkButton    db "Колбаса",0
а как на масме сделать, чтоб строка была в юникоде?
на фасме вот так
szOkButton du "Колбаса",0

Добавлено:

Цитата:

Продолжаю потихоньку осваивать внутренности Windows 7. В новой системе появилась такая приятная фича интерфейса, как отображение прогресса выполнения какого-нибудь действия прямо на кнопке приложения в панели задач. Впервые я увидел это в программе Total Commander при копировании и переносе файлов, сразу очень захотелось узнать как это делается и научиться делать самому. К сожалению, во всех доступных мне интернетах были найдены только примеры для Delphi, .NET и прочих языков высокого уровня. Пришлось лезть в отладчик и запасаться железным терпением, зато в результате получилось вполне рабочее решение. Для управления элементами панели задач в Windows 7 используется COM-интерфейс ITaskBarList3. Как обычно, никаких описаний в FASM нет, и все необходимое нужно искать самому или портировать с других языков.

какой полезный сайтик
Автор: semiono
Дата сообщения: 17.08.2010 16:00
Помогите мне всё вместе собрать ShellExecute() и GetCommandLine()
Есть небольшой набросок, не уверен, что хороший код, но если можно поправьте.
Однако, мне хотелось бы обработку ключей добваить... и при этом то, что уже есть не сломать.

Например, добавить обработку
--help
-options
-a
-b
/x
/z
итп. чтобы в секции '.data' определить ответ на эти ключи и юзать их в ShellExecute,
как параметры.

[more]
Код: ; fasm
invoke GetCommandLine
mov ebx,eax
next:
cmp byte [ebx],0
jz @xor

cmp byte [ebx],' '
je @cli

inc ebx
jmp next
@xor:
xor ebx,ebx
@cli:
invoke ShellExecute,NULL,NULL,lpFile,ebx,NULL,SW_NORMAL
exit:
Автор: Benchmark
Дата сообщения: 17.08.2010 16:10
bomzzz

Цитата:
szOkButton db "Колбаса",0
а как на масме сделать, чтоб строка была в юникоде?


можно "в лоб":
szOkButton dw "К","о","л","б","а","с","а",0


Цитата:
на фасме вот так
szOkButton du "Колбаса",0


На фасме если используешь юникодные inc-файлы (win32w*.inc или win64w*.inc), то можно еще так:

szOkButton TCHAR "Колбаса", 0
Автор: bomzzz
Дата сообщения: 18.08.2010 00:37
спс попробую. сделал в лоб
OKButton        db 12h, 04h, 4Bh, 04h, 31h, 04h, 40h, 04h, 30h, 04h, 42h, 04h, 4Ch, 04h, 0, 0
сосздал текстовый документ сохранил его в юникоде, открыд шестнадцетиричным редактором и переписал цифирки


Добавлено:
szOkButton dw "К","о","л","б","а","с","а",0
так не работает

Добавлено:
szOkButton    TCHAR "Колбаса",0
и так не работает - но не ругается.

не работает в смысле кодировка нету - кракозябрины
Автор: Benchmark
Дата сообщения: 18.08.2010 14:35
bomzzz

Цитата:
szOkButton dw "К","о","л","б","а","с","а",0
так не работает

Интересно. В tasm работает.


Цитата:
szOkButton TCHAR "Колбаса",0
и так не работает - но не ругается.

не работает в смысле кодировка нету - кракозябрины

Какой функцией выводишь этот текст ?
Автор: bomzzz
Дата сообщения: 18.08.2010 14:37
то есть? никакой вот так пишу и ассемблирую.
в каждом ассемблере по своему. в масме так не работает, или вообще никак, или как то по другому

Добавлено:
усилино погуглил советутют вот так
invoke ToUni,CTEXT("hello there"),addr myunibuff,512

а вот так
include \masm32\macros\ucmacros.asm
WSTR        szOkButton,"Колбаса"
не работает, может я четане так делаю конечно
Автор: Benchmark
Дата сообщения: 18.08.2010 15:21
bomzzz
Все, понял. Да, все правильно, для *W варианта русский текст сначала надо сконвертировать в юникод. Иначе получится не то.
Автор: bomzzz
Дата сообщения: 18.08.2010 15:26
ну как то странно не сконвертировать строку при ассемблировании, а делать это каждый раз программно, а вдруг таких строк много.
Автор: Benchmark
Дата сообщения: 18.08.2010 15:44

Цитата:
ну как то странно не сконвертировать строку при ассемблировании

Согласен, но в FASM du ничего не конвертирует, а просто резервирует два байта и слепо кладет туда то, что дали.

А табличка для русской кодировки вот: unicode.org/charts/PDF/U0400.pdf
Хотя через редактор быстрее.
Автор: bomzzz
Дата сообщения: 18.08.2010 15:48
данадеюсь этот юникод больше никогдане понадобится. он нужен в SHBrowseForFolder к которой как бы доступ через ж, и имя кнопки должно быть в юникоде. больше нигде не попадался этот юникод
Автор: bomzzz
Дата сообщения: 19.08.2010 12:30
как создать вот такое окно

чтоб не было этой иконки и менюшки к ней привязанной, но в тоже время был крестик


никто не видел хелпа по окнам с картинками?

Добавлено:
и прибавлял и отнимал никак не могу к такому результату прити
Автор: Benchmark
Дата сообщения: 19.08.2010 14:17
bomzzz

Цитата:
как создать вот такое окно

чтоб не было этой иконки и менюшки к ней привязанной, но в тоже время был крестик


Во-первых это должен быть диалог, а не окно (окна обязаны иметь иконку), т.е. создаваться процедурой вроде CreateDialog или DialogBoxParam, а не CreateWindow или CreateWindowEx.

Во-вторых у диалога должен быть выставлен стиль вроде
WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
Автор: bomzzz
Дата сообщения: 19.08.2010 14:19
щас попробую - а то иконка только с крестиком убирается, я уж думал что крестик пририсовали кнопкой
Автор: bomzzz
Дата сообщения: 21.08.2010 13:33
как отключить кеширование при чтении файла? при записи вроде вот так отключается
invoke CreateFile,File_Write,GENERIC_WRITE,0,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL OR FILE_FLAG_WRITE_THROUGH OR FILE_FLAG_NO_BUFFERING,0
но все равно кешируется (файл попадает в файл подкачки) - видимо при чтении, а там такого параметра нету - ни в OpenFile, ни в WriteFile, ни в WriteFileEx
Автор: bomzzz
Дата сообщения: 22.08.2010 04:11
разобрался
OpenFile Function
Note Only use this function with 16-bit versions of Windows. For newer applications, use the CreateFile function.
Автор: bomzzz
Дата сообщения: 24.08.2010 17:15
никто не делал:
как засунуть в сопроцессор 64 битное целое число и вытащить его в 10-ном сжатом формате???

засовывать засовывается, складывается и даже достается, а вот в десятичный формат чета не врублюсь как делать

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.