Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2011-06-09 15:54:43 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 21:12:56
карма: 0

0
Ответов: 3889
Рейтинг: 362
#2: 2011-06-09 15:58:16 ЛС | профиль | цитата
lnLineCodeTutorial ICOsnovaOstalnoeDLLcycleconditionTypesHitrostiModuli
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#3: 2011-06-09 16:10:36 ЛС | профиль | цитата
1nd1g0, не пугай людей.
77.35.131.235, для вставки кода Delphi служит компонент lnLineCode
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#4: 2011-06-09 16:21:38 ЛС | профиль | цитата
Tad, первую ссылку видел? Ссылки даны в порядке полезности, начиная с "официальной" статьи в Wiki. Человек явно уже знает про IC, раз формулирует так вопрос. Ты лучше ему расскажи про местный KOL и библиотеки специфичные, тут ты гораздо полезнее меня.
------------ Дoбавленo в 16.21:
77.35.131.235, почитайте ещё этот материал:

Вставка кода


Этот компонент использует код Delphi. Компонент используется тогда, когда подходящего компонента нет, а делать компонент нет смысла из-за нечастого использования. В таких случаях код вставляется в этот компонент.
С помощью этого компонента нельзя вставлять новые визуальные компоненты, можно только невизуальные.
Создайте новый проект и поставьте на рабочее поле компонент «Вставка кода». В нём уже есть необходимый код для корректной работы программы, вы можете запустить программу. Но никаких функций пока в компоненте нет. Сейчас мы добавим их.
Выделите компонент и откройте его параметр Code. Поле для ввода кода откроется на новой вкладке. Обратите внимание, что первая строка записана как unit HiAsmUnit. В файлах кодов здесь записано имя файла, ну а тут записывается именно так.
Ниже подключены три библиотеки: KOL, Share и Debug. Как правило, они всегда и используются в этом компоненте, но если понадобится другая библиотека (то есть нужно будет вызвать функции из неё, а не писать их в компоненте), то можно подключить и её.
Затем написано следующее.



type
THiAsmClass = class(TDebug)
private

public

end;



type означает начало секции, где описываются характеристики компонента.
Компонент не имеет названия (имеется в виду сам код, а компонент «Вставка кода», конечно, имеет название), поэтому здесь выбрано формальное THiAsmClass. Затем идёт не присваивание, а знак равенства и стоит служебное слово class. А в скобках после него указан класс, то есть родительский объект для компонента. В данном случае это TDebug, один из базовых классов. Все его характеристики наследуются этим компонентом. Если бы стояло THIWin, то компонент был бы потомком другого объекта, но такого предка имеют только визуальные компоненты, для невизуальных нужен как раз указанный в коде. Он и будет для нас основным, менять тут ничего не надо.
private открывает секцию, где стоят описания глобальных переменных и функций, доступных только внутри компонента.
public открывает секцию, где описаны все характеристики компонента, доступные из HiAsm, например точки и параметры.
end закрывает все секции

Мы с вами напишем сюда код, который позволит управлять системным меню программы. Это такое меню, которые открывается при щелчке правой кнопкой по заголовку окна. Оттуда доступны функции «Закрыть», «Свернуть» и другие. В HiAsm нет компонента, позволяющего получать доступ к этому меню и изменять его. Полноценный компонент писать не будем и мы, а только реализуем небольшой пример во «Вставке кода».
В файлах кода тоже есть такие секции, но мы их не рассматривали тогда, потому что в файлах кода находится много кода, который затруднит понимание этого материала из-за ухудшения наглядности
Системное меню – стандартный элемент Windows-программ, значит, для работы с ним потребуется библиотека Windows. В разделе uses после слова Debug поставьте запятую и напишите Windows. В конце строки обязательно должна стоять точка с запятой (в конце мы покажем правильный вариант кода, вы сможете проверить свои ошибки, если они возникнут).
Каждый визуальный элемент в Windows имеет свой идентификатор. вы это уже знаете. Системное меню – тоже, именно благодаря идентификатору мы и получаем доступ к системному меню. Поэтому нужно объявить переменную, которая будет хранить идентификатор меню. Тип такой переменной – HMenu, но это опять же формальность, потому что идентификатор – это число типа Integer, и HMenu введено для того, чтобы программисты точно знали, для чего может использоваться эта переменная. У нас, однако же, переменная всего одна, поэтому мы просто напишем между private и public (в новой строке между ними, что относится к секции переменных) строку mn:integer, после чего обязательно поставим точку с запятой. mn – это имя переменной, оно выбирается произвольно (но только английскими буквами).
Теперь нужно объявить процедуру, по которой будет происходить определённое действие. В разделе public (то есть в новой строке до end) напишите: procedure red_men(var dt:TData; index:word), после чего поставьте точку с запятой. red_men – это имя процедуры, его тоже задают произвольно.
А теперь в разделе implementation (в строчках после этого слова, но до завершающего end) нужно написать обработчик процедуры. Скопируйте следующее.



procedure THiAsmClass.red_men;
begin

end;

THiAsmClass говорит о том, что процедура принадлежит именно этому компоненту. red_men – имя процедуры, которое мы использовали при объявлении. Ну а между началом и концом мы будем располагать действия.
Для начала нужно получить идентификатор. В коде для этого пользуются вызовом функции, которая вернёт идентификатор. А затем его нужно присвоить переменной. Запишите такую строку: mn := GetSystemMenu(ReadHandle,false) и в конце поставьте точку с запятой. Функция GetSystemMenu является стандартной для Windows API, она возвращает идентификатор системного меню окна. Но для этого ей нужно передать идентификатор самого окна! Функция ReadHandle содержит именно идентификатор данного окна, и это передаётся в параметре для вызова функции GetSystemMenu. После запятой в параметре передаётся значение false, это важный параметр, поэтому он тоже нужен.
Теперь в переменной mn находится идентификатор системного меню этого окна. Нам остаётся лишь вызвать другую функцию, для операций с меню.
Попробуем удалить пункты из этого меню. Для этого используется функция DeleteMenu, которой нужно передать идентификатор меню, позицию пункта меню или его идентификатор, константу, определяющую предыдущий параметр. Запишите в новой строке следующее: DeleteMenu(mn,0,mf_ByPosition). Не забудьте о точке с запятой. Итак, mn – это идентификатор, мы его передаём в параметре первым, как и требуется. 0 – это положение пункта меню. Пусть для начала удалим первый пункт (у него индекс равен нулю). mf_ByPosition говорит о том, что вторым параметром мы выбрали положение пункта меню, а не идентификатор.
Итак, код готов. Осталось только вызвать саму процедуру red_men. Для этого переключитесь на вкладку со схемой и выделите компонент «Вставка кода». Откройте его параметр WorkPoints и напишите там имя процедуры, в нашем случае это red_men. Закройте редактор точек и посмотрите на компонент: у него появился метод. вызвать вы его можете любым способом. Например, поставьте кнопку и подключите её к компоненту. Теперь запустите программу и посмотрите на системное меню, все пункты у него пока есть. Нажмите один раз кнопку. Исчезнет первый пункт. При следующем нажатии на кнопку отсчёт будет производиться относительно нового меню, то есть первым теперь будет тот пункт, что в старом меню был вторым. Он удалится. Таким образом можно удалить вообще все пункты системного меню, помните только, что вместе с ним удаляются и команды. То есть, если вы удалите пункт «Закрыть», то не сможете закрыть форму кнопкой в заголовке окна, хотя сможете по Alt+F4.
А сейчас взгляните на код, полученный нами (скопируйте его вставьте в HiAsm).



Add(InlineCode,6944461,280,182)
{
WorkPoints=#7:red_men|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,windows;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|15: mn:integer;|9: public|48: procedure red_men(var dt:TData; index:word);|5: end;|0:|14:implementation|0:|30:procedure THiAsmClass.red_men;|5:begin|39: mn := GetSystemMenu(ReadHandle,false);|32: DeleteMenu(mn,0,mf_ByPosition);|4:end;|0:|4:end.|
}
Add(Button,3215820,210,182)
{
Left=10
Top=20
link(onClick,6944461:red_men,[])
}


Это было небольшое знакомство с кодом, точнее не столько даже с кодом Delphi, сколько некоторыми особенностями оформления кода в HiAsm
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#5: 2011-06-09 16:26:15 ЛС | профиль | цитата
1nd1g0, видел. и её было вполне достаточно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#6: 2011-06-09 16:34:08 ЛС | профиль | цитата
Tad, а вдруг язык Roma покажется человеку понятнее и ближе, кто знает, лишней информации не бывает, не зря же человек старался. Хотя согласен с тем, что там ещё есть над чем работать.
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#7: 2011-06-09 16:37:15 ЛС | профиль | цитата
Народ! А это, случаем, не goluzov
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#8: 2011-06-09 16:38:55 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 21:12:57
карма: 0

0
Ответов: 3889
Рейтинг: 362
#9: 2011-06-09 16:39:51 ЛС | профиль | цитата
nesco писал(а):
А это, случаем, не <сокрыто_тьмою>
nesco, поразительная память на адреса.
карма: 1

0
Ответов: 245
Рейтинг: 3
#10: 2011-06-09 16:42:50 ЛС | профиль | цитата
nesco, а если голузов.. то че? я обещал тебе на вебманей закинуть я сделаю... только щас нет денег. я работаю, создаю програму... как пойдет так и будут бабосы...
------------ Дoбавленo в 16.42:
ты говоришь даже спасибо тебе не было... че это спасибо.. я обещал что денег закину, это лучше чем спасибо
карма: 0

0
Ответов: 3889
Рейтинг: 362
#11: 2011-06-09 16:48:01 ЛС | профиль | цитата
goluzov, я не делфятник, но предположу, что не всё равно, из какой версии Delphi и как выдирать файлы, и куда их копировать, кстати.
карма: 1

0
Ответов: 245
Рейтинг: 3
#12: 2011-06-09 16:50:47 ЛС | профиль | цитата
мне сделали вывод загрузки процессора и памети. на delphi. вот я и хочу както вставить это в Hiasm
карма: 0

0
Ответов: 4631
Рейтинг: 749
#13: 2011-06-09 17:08:07 ЛС | профиль | цитата
77.35.131.235 писал(а):
скопировал из установочной delphi

Бесполезное занятие. Чтобы они скомпилировались с текущим Делфи, из официального дистрибутива нужно будет выдернуть чуть-ли не 30% поставляемых модулей. Уверен, что тот код, что тебе нужен, основан на Windows API и без больших проблем заработает и в HiAsm.
карма: 26

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#14: 2011-06-09 17:10:56 ЛС | профиль | цитата
goluzov писал(а):
а если голузов.. то че

Да не, ничего, просто незареганный
goluzov писал(а):
я обещал тебе на вебманей закинуть

Честно скакзать, не припоминаю, что бы у нас какой-то разговор был про оплату. К тому же, я не пользуюсь вебманями
goluzov писал(а):
мне сделали вывод загрузки процессора и памети. на delphi. вот я и хочу както вставить это в Hiasm

Не пройдет так просто, разные библиотеки у нас, в Delphi -- VCL, а у нас -- адаптированный KOL

------------ Дoбавленo в 17.10:
Короче, давай код, будем посмотреть
карма: 22

0
Ответов: 245
Рейтинг: 3
#15: 2011-06-09 17:27:33 ЛС | профиль | цитата
http://forum.hiasm.com/forum_serv.php?q=56&id=2497
------------ Дoбавленo в 17.26:
там мне его еще есть версия немного переделаная... чтобы выводить только нужный PID...
------------ Дoбавленo в 17.27:
и тут еще нет загрузки диска
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)