Сейчас на форуме: hgdagon, asfa, bartolomeo (+5 невидимых) |
eXeL@B —› Программирование —› Создание DLL |
Посл.ответ | Сообщение |
|
Создано: 20 сентября 2006 06:50 · Личное сообщение · #1 Народ помогите пожалуйста сделать DLL, которая бы создавала диалог и по нажатию кнопки на нем, передавала бы строку введнную в TEdit (который тоже должен находится на диалоге длл)... Язык программирования ASM/Delphi.... На асме просто не знаю как сами DLL делать, а в дельфи пробывал так: var str:string; begin GetDlgItemText(Win,0,str,255); Result:=str; end; //где win-идентификатор, 0-ид элемента Выдавал ошибку на счет несовместимости типов str тогда сделал GetDlgItemText(Win,0,pchar(str),255); но в этом случае строка почемуто приходила пустой.... Народ помогите очень надо... |
|
Создано: 20 сентября 2006 06:59 · Личное сообщение · #2 |
|
Создано: 20 сентября 2006 07:38 · Личное сообщение · #3 |
|
Создано: 20 сентября 2006 07:39 · Личное сообщение · #4 Veliant А почему встроенные возможности Delphi не хочешь использовать, этот грёбаный GetDlgItemText, когда можно тупо:
И всё в ажуре, при большом желании можно такую процедуру и в чужие проги встроить, вешаешь эту фигню на кнопку - и всё ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 20 сентября 2006 07:46 · Личное сообщение · #5 |
|
Создано: 20 сентября 2006 07:47 · Поправил: Veliant · Личное сообщение · #6 ARCHANGEL пишет: Veliant А почему встроенные возможности Delphi не хочешь использовать, этот грёбаный GetDlgItemText, когда можно тупо: string_peremennay:=Edit1.Text; И всё в ажуре, при большом желании можно такую процедуру и в чужие проги встроить, вешаешь эту фигню на кнопку - и всё Этот вариант отпадает т.к. я сделал диалог из ресурсов =) Asterix пишет:я вас попрошу нашу птичку не обижать (с) Матроскин Это ты к чему |
|
Создано: 20 сентября 2006 07:52 · Личное сообщение · #7 Veliant Этот вариант отпадает т.к. я сделал диалог из ресурсов =) Дык...переделай, шутка, конечно, а вообще функция достаточно часто встречается, попробуй найти в какой-то проге, посмотри под отладчиком, как туда операторы грузятся, и продублируй на делфи ассемблерными вставками. Вот и вся наука - если сам не придумал, пусть кто-то думает ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 20 сентября 2006 08:18 · Личное сообщение · #8 |
|
Создано: 20 сентября 2006 08:39 · Личное сообщение · #9 Error_Log Ну и к чему тут был этот мега-комментарий: Вот и пишут программисты потом тупо, не зная как оно работает на более низком уровне... Чё там писать, просто в отладчике смотришь, что в каком виде загружается, что из памяти грузить можно, а что только оффсетом прямым и копируешь идею в свою прогу, а то, что программеры пишут тупо, так это вопрос спорный. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 20 сентября 2006 08:50 · Личное сообщение · #10 |
|
Создано: 20 сентября 2006 08:52 · Поправил: AlexZ · Личное сообщение · #11 Тупые программеры пишут тупо, умные пишут умно, а разницы - никакой ;) Veliant, id другой попробуй назначить вместо нуля. или asm pushad push 255 lea esi, str push esi push <id> push Win call GetDlgItemText popad end; или как там его... GetDlgItemText(Win,0,ptr(str),255); ----- Я медленно снимаю с неё UPX... *FF_User* |
|
Создано: 20 сентября 2006 09:02 · Личное сообщение · #12 Вопрос поставлен некорректно. Неясно как ДЛЛ обязана создавать диалог, во время своей загрузки или содержать функцию создающую диалог, которую кто-то должен будет вызвать Куда передавать строку, в рамках одного процесса или нет думаю внести изменения чтоб нижеидущий код компилился в ДЛЛ не составит труда: program KeyGen;
|
|
Создано: 20 сентября 2006 09:03 · Поправил: Asterix · Личное сообщение · #13 // KeyGen.RC //////////////////////// #define IDD_DIALOG_1 200 #define IDC_EDIT1 103 #define IDC_EDIT2 104 #define IDC_GROUPBOX2 102 #define IDC_GROUPBOX1 101 #define MAINICON 400 IDD_DIALOG_1 DIALOGEX 0, 0, 113, 58 STYLE DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX CAPTION "KeyGen" FONT 8, "Tahoma", 400, 0 { CONTROL "Serial Number", IDC_GROUPBOX1, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 3, 3, 106, 23 CONTROL "Reg Number", IDC_GROUPBOX2, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 3, 31, 106, 23 CONTROL "Enter your serial number", IDC_EDIT1, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 8, 11, 96, 10, WS_EX_NOPARENTNOTIFY | WS_EX_STATICEDGE CONTROL "", IDC_EDIT2, "edit", ES_LEFT | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 8, 39, 96, 10, WS_EX_NOPARENTNOTIFY | WS_EX_STATICEDGE } MAINICON ICON "KeyGen.ico" |
|
Создано: 20 сентября 2006 09:07 · Поправил: mrJ · Личное сообщение · #14 1. иногда еще глюки возникают из-за ptr(str) т.е. введи массив buf:array[0..max_path] of char (или pchar) непомню и используй его а не string; (но это иногда) 2. на счет id - уже сказали 3. почему ты 255 символов считываешь.... эт конечно не ошибка но можно и длинну текста посчитать GetWindowTextLength , ну это конечно необязательно... добавлено: упс)) немного опоздал |
|
Создано: 20 сентября 2006 09:18 · Личное сообщение · #15 |
|
Создано: 20 сентября 2006 12:57 · Личное сообщение · #16 mrJ пишет: 3. почему ты 255 символов считываешь.... эт конечно не ошибка но можно и длинну текста посчитать GetWindowTextLength , ну это конечно необязательно... Это не чтение 255 символов, это переменная для получения строки длиной 255 байт, чтобы не было переполнения буфера. Функция прочитает НЕ БОЛЬШЕ, чем это число, даже если длина строки в едите больше ----- Недостаточно только получить знания:надо найти им приложение |
|
Создано: 21 сентября 2006 07:39 · Поправил: DrGolova · Личное сообщение · #17 > Действительно используя массив все начало норма работать. Естесно А чтобы работало с типом string, надо наверно выделить память под строку с помошью Str.SetSize(или как там?) и только потом конвертить в PChar А то поводились читать мато лого что в классы, так еще и не выделяя их, еще удивляются что не работате (хорошо что не падает с разрушением кучи |
|
Создано: 21 сентября 2006 11:41 · Личное сообщение · #18 |
|
Создано: 21 сентября 2006 20:15 · Личное сообщение · #19 |
|
Создано: 22 сентября 2006 00:39 · Личное сообщение · #20 |
eXeL@B —› Программирование —› Создание DLL |
Эта тема закрыта. Ответы больше не принимаются. |