Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по API

6.6K
25 июля 2006 года
Scaiman
126 / / 25.07.2006
Здравствуйте я недавно начел изучать Assembler и не понимаю некоторых API. Помогите разобраться.
invoke GetCurrentDirectory,40,ADDR Catalog
invoke GetFileSizeEx, Sustem(что здесь указать путь к файлу это понятно),В книге пишется что тут указывают на структуру LARGE_INTEGER для сохранения размера файла так где или как получить размер. Про структуру ничего непонятно там всего в 5 словах.
invoke WriteFile,Путь к файлу, Переменная для записи тоже понятно,?,?,?
И как скопировать в буфер например не 1 строчку а 10.
Какой Api или Macro можно слаживать данные в буфере Catalog и Bufer
C Macro вообще толком нечего непонятно
Такая же проблема и с ReadFile
Invoke GetCursorPos,Позиция курсора, сюда переменная нужна или ???.
Invoke EnableMenuItem,дескриптор меню де его взять ,IDB_EXIT,MF_DISABLE
Страницы:
398
25 июля 2006 года
Alexandoros
630 / / 21.10.2005
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getcurrentdirectory.asp

Все остальное там же.
Нашел с чего асм изучать, однако.
6.6K
25 июля 2006 года
Scaiman
126 / / 25.07.2006
Меня не само описание интересует API интересует
мне непонятна дапустим как раотает эта API
GetFileSizeEx, Sustem(что здесь указать путь к файлу это понятно),В книге пишется что тут указывают на структуру LARGE_INTEGER для сохранения размера файла так где или как получить размер. Про структуру ничего непонятно там всего в 5 словах.
240
25 июля 2006 года
aks
2.5K / / 14.07.2006
LARGE_INTEGER - это по сути 64-х битное значение. Чтобы представлять большие числа.
6.6K
07 августа 2006 года
Scaiman
126 / / 25.07.2006
Почему при вызови этой API с такими параметрами не происходит создание файла invoke CreateFile,ADDR Files,GENERIC_READ /GENERIC_WRITE,FILE_ALL_ACCESS,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
mov File,eax
invoke CloseHandle,File
6.6K
11 августа 2006 года
Scaiman
126 / / 25.07.2006
Может кто знает какиенебуть ссылки по работе в сети.
И ещо маленький вапрос вот [COLOR="Blue"]invoke WriteFile,File,ADDR Opisanie,25,ADDR ZBute,NULL[/COLOR] записывает в файл а надо ещо пару параметров записать только с новой строчки как это выполнить.
Заранее спасибо.
354
12 августа 2006 года
ШпиЁн
468 / / 19.02.2006
чтобы записать с новой строчки, просто в конце строки надо добавить символы 13,10.
например:
 
Код:
buffer db "первая строчка", 13,10, 0

Все что ты запишешь после этого появится в файле с новой строки:-)))
6.6K
13 августа 2006 года
Scaiman
126 / / 25.07.2006
Спасибо.
6.6K
13 августа 2006 года
Scaiman
126 / / 25.07.2006
Подскажите как это работает
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="3.5.0.1442"
processorArchitecture="X86"
name="????"
type="win32"
/>
<description>Restorator: Edit Resources and User Interface</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Или точнее как зделать чтобы программа имела оформление под Xp
334
14 августа 2006 года
HexEdit
809 / / 27.07.2006
[QUOTE=Scaiman]Подскажите как это работает
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="3.5.0.1442"
processorArchitecture="X86"
name="????"
type="win32"
/>
<description>Restorator: Edit Resources and User Interface</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Или точнее как зделать чтобы программа имела оформление под Xp[/QUOTE]
Нужно либо включить данный текст как ресурс с кодом 24 (RT_MANIFEST) и именем 1
либо в каталоге с екзешником (например MyProgram.exe создать файл типа MyProgram.exe.manifest в UTF-8 и вставить туда этот текст.
Исчо можно изменить описание (<description>...</description> и имя проги (<assemblyIdentity>\<name> (где ????)
354
14 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Я не знаю как на masm, но на vc++ этого явно недостаточно для оформления "а-ля ХР". Надо еще прилинковать comctl32.lib, подключить commctrl.h и вызвать в WinMain в самом начале функцию InitCommomControls(). Также manifest должен значится в ресурсах ДО всех остальных ресурсов(кнопочек и т.д.) иначе не работает. нечто типа
 
Код:
#define IDR_RT_MANIFEST1                1
#define IDD_DIALOG1                     101
#define IDC_CHECK1                      1001
#define IDC_RADIO1                      1002
#define IDC_SLIDER1                     1003


:-))))
Если надо, могу пример на VC++ скинуть, с пошаговым описанием.
6.6K
14 августа 2006 года
Scaiman
126 / / 25.07.2006
А незнаешь есть ли где на FTP ссылка на скачку VC++ а то так качать дорого я ещо хотел узнать есть ли у кого info по работе с сетями.
И примерчик тоже прегодиться.
354
14 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Насчет VC++ - проще на диске достать, и дешевле, и еще прог каких-то накинут обязательно :-))) у меня еще прилагался IntelC++ Compiler.

Насчет сетей - информации в сети навалом! :-))))

Вот как подключить манифест на XP, в VC++ проект MFC автоматически подшивает его, а если пишешь Win32 Project, то тут приходится все делать ручками., и вот как (лень второй раз писать):
http://forum.codenet.ru/showthread.php?p=123148#post123148

Пример во вложении:-))))
6.6K
17 августа 2006 года
Scaiman
126 / / 25.07.2006
Немагу разобраться, вот D:\WinAsm\Progect\Sustem\asd.exe лежит файл ему надо задать камандную строку вида такого -Q -Z 0, C:\ghp.exe как это оформить через ShellExecute чото неполучается неправельно задаю параметры. Маленький вапрос что здесь нетак
Run db 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
Run2 db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
Run3 db 'HKEY_LOCAL_MACHINE',0
Exe db "\IMAGE.exe",0
.data?
Hkey HKEY ?
....
invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,addr Run2,NULL,KEY_QUERY_VALUE,Hkey

invoke RegSetValueEx,HKEY_LOCAL_MACHINE,NULL,addr Run,REG_SZ,addr Catalog,addr Exe
invoke RegCloseKey,Hkey
354
17 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Э-э-э... ShellExecute и эта ветка в реестре не имеют ничего общего...
Это ветка автозагрузки, вот как можно прописать там себя:
 
Код:
HKEY key;
CHAR Buf[80];

strcpy(Buf, "C:\\my_program.exe");
RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", &key);
RegSetValueEx(key, "MyProgram", 0, REG_SZ, (LPBYTE) Buf, strlen(Buf) + 1);      
RegCloseKey(key);
6.6K
17 августа 2006 года
Scaiman
126 / / 25.07.2006
Как мне задать D:\WinAsm\Progect\Sustem\asd.exe "asd.exe"- консольное приложение мне надо чтобы оно получила -Q -Z 0, C:\ghp.exe Чтото Вроде a.bat=>содержит D:\WinAsm\Progect\Sustem\asd.exe -Q -Z 0, C:\ghp.exe
240
17 августа 2006 года
aks
2.5K / / 14.07.2006
ShellExecute(NULL, "open", "D:\\WinAsm\\Progect\\Sustem\\asd.exe", " -Q -Z 0, C:\\ghp.exe", "D:\\WinAsm\\Progect\\Sustem", SW_SHOWNORMAL);
6.6K
17 августа 2006 года
Scaiman
126 / / 25.07.2006
Спасибо вам всем!
6.6K
17 августа 2006 года
Scaiman
126 / / 25.07.2006
ШпиЁн почемуто у меня неполучаеться, правда я на MASM пишу.
Подскажите какую небуть литературу по работе в сети желательно в MASM а то я его сейчас изучаю (мне никак ненайти везде на С++).
Есть ли вазможность читать из файла например чтобы первая строка была в переменной "A" а другая в "B"
Заранее спасибо.
841
18 августа 2006 года
_nic
199 / / 29.07.2006
У меня есть вопрос по оконной процедуре:Что это вообще такое?И счем его над есть ?Потому как в разных статьях и буках эта процедура выглядит по разному.Почитал "Азбука программирования в WIN32 API" Румянцева и статью с этого ресурса,так в них переменные и ох писания несколько различаются :( ,к тому же на MSDN'е ничего об внятного так и ненашел кроме метода WNDPROC (но там пример были на бейсике)и что то что обьвлялось так же как и оконная процедура содержит все теже переменные , но является функцией

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowprocedures/windowprocedurereference/windowprocedurefunctions/windowproc.asp

Я уже совсем запутался.Может кто распишет что к чему?
354
18 августа 2006 года
ШпиЁн
468 / / 19.02.2006
_nic, могу объяснить по простому :-)))
Windows - система окон и оконных сообщений. Перед созданием самого окна нужно зарегистрировать его класс. В этом классе можно указать иконку для окна, курсор, и т.д(если надо подробнее - смотри описание RegisterClassEx и WNDCLASSEX).
Но в экземпляре WNDCLASSEX нужно обязательно указать какая функция будет принимать и обрабатывать оконные сообщения. Прототип этой функции один и тот же ВСЕГДА, это typedef LRESULT (*WNDPROC)(HWND, UINT, WPARAM, LPARAM), а названия переменных, как и самой функции могут быть разные. Это оконная процедура.

Допустим пользователь закрывает окно, нажав крестик - система отсылает нашему окну во втором параметре сообщение WM_CLOSE, наша оконная процедура должна ее обработать(как она ее будет обрабатывать зависит от программиста ;-))))

Вот пример:
Код:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND: // какая-нибудь команда, например нажатие кнопки, выбор меню и т.д
    {
                break;
    }
    case WM_PAINT: // рисуем на окне
    {   hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        EndPaint(hWnd, &ps);
        break;
             }
    case WM_DESTROY: // уничтожение  окна
    {
                 PostQuitMessage(0);
        break;
             }
    default: // мы можем не обрабатывать ВСЕ сообщения, а только нужные. все что мы не обработали нужно отдавать функции DefWindowProc.
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
841
18 августа 2006 года
_nic
199 / / 29.07.2006
Попробовал я написать простое окно пользуясь "Азбука программирования в WIN32 API" Румянцева и MSDN. Скомпилировалось то все нормально а дальше выдало ошибку линковщика :( , что 5 боланд что 6 M$ VC++ естествеено что полученное exe вылетало и предлагалось отправить рапорт M$ .Но вот что интересно 6 борланд ошибок невыдавал но полученное exe незапускалось, просто на пару секунд появлялся курсор загрузки и все.
Код:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
HWND hWnd;
WNDCLASS wcl;
MSG msg;
char classname[]="myprog";
wcl.style = CS_HREDRAW | CS_VREDRAW;
wcl.lpfnWndProc = (WNDPROC)WndProc;
wcl.hInstance = hInstance;
wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wcl.hCursor=LoadCursor(NULL, IDC_ARROW);
wcl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcl.lpszClassName =classname ;
wcl.lpszMenuName=NULL;
RegisterClass(&wcl);
hWnd=CreateWindow(classname,"myprog",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, 300, 300,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
return msg.wParam;  
}
LRESULT CALLBACK WndProc (HWND hWnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
HDC hDC;
PAINTSTRUCT PaintStruct;
RECT Rect;
switch(msg)
    {
    case WM_PAINT:
    hDC=BeginPaint(hWnd,&PaintStruct);
   GetClientRect(hWnd,&Rect);
   DrawText(hDC,"jggnf",-1,&Rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    EndPaint(hWnd,&PaintStruct);
    return 0;
   case WM_DESTROY:
   PostQuitMessage(0);
   return 0;
    }
return DefWindowProc(hWnd,msg,wparam,lparam);
}

Что там может быть не так :confused: :confused: .Или используемый мной пример настолько устарел что это все на ХР вообще неможет работать :confused:
354
18 августа 2006 года
ШпиЁн
468 / / 19.02.2006
при заполении wcl тебе нужно добавить вот что:
 
Код:
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
841
18 августа 2006 года
_nic
199 / / 29.07.2006
[QUOTE=ШпиЁн]при заполении wcl тебе нужно добавить вот что:
 
Код:
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
[/QUOTE]
Нет не то. :) Лутчше скажи какие либы надо прикрутить
354
19 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Как какие? стандартные, которые автоматически подшиваются вполне хватит. я на VC++ 7.0 свободно откомпилил. что за ошибку хоть показывает?
841
19 августа 2006 года
_nic
199 / / 29.07.2006
[QUOTE=ШпиЁн]Как какие? стандартные, которые автоматически подшиваются вполне хватит. я на VC++ 7.0 свободно откомпилил. что за ошибку хоть показывает?[/QUOTE]
Unresolve external '_main' и дальше имя *.obj файла .А если в 6 VC выбрать use static MFC libraries то выдает аж 17 ошибок при линковке
354
19 августа 2006 года
ШпиЁн
468 / / 19.02.2006
создаешь обычный Win32 Project, а в настройках указываешь Windows Application, и ставишь галочку Empty. никакого MFC тут не надо и быть не должно.
841
19 августа 2006 года
_nic
199 / / 29.07.2006
[QUOTE=ШпиЁн]создаешь обычный Win32 Project, а в настройках указываешь Windows Application, и ставишь галочку Empty. никакого MFC тут не надо и быть не должно.[/QUOTE]
Я так и сделал присоединил cpp файл но все равно при линковке выдало 4 ошибки .
3
19 августа 2006 года
Green
4.8K / / 20.01.2000
Напоминает прием родов по телефону...
354
19 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Green, а вот ты сразу стал спецом, да? с самого рождения супер-программист? :-)))))))))))) все когда-то начинали.

_nic, я просто скопировал твой код отсюда, вставил в пустой проект, и все заработало...
841
19 августа 2006 года
_nic
199 / / 29.07.2006
Придется наверно завязывать с таким способом создания окон , нервы дороже :mad:
3
19 августа 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=ШпиЁн]Green, а вот ты сразу стал спецом, да? с самого рождения супер-программист? :-)))))))))))) все когда-то начинали.
[/QUOTE]
Просто, одни начинали с чтения литературы и попыток вникнуть, а другие с множества поверхностных вопросов без всякого желания разобраться самим.

Ладно, не суть важно.
_nic, может, проще будет для начала изучить соотв. материал на firststeps.ru ?
841
19 августа 2006 года
_nic
199 / / 29.07.2006
Ура таки скомпилировалось с помощью BC++ 6-го :D .Проще простого оказолось ,надо было просто доверится интелектуальности BC++ 6
PS:а на VC++ пусть сам БГ пишет :mad: :mad: :mad:
3
19 августа 2006 года
Green
4.8K / / 20.01.2000
Ага, оказалось, опять во всем БГ виноват!
Это он такой тупой, а не те, кто не в состоянии документацию и пользоваться инструментом.

А самый классный инструмент программирования это даже не BC++, а бубен. Стучишь себе, шаманишь, ничего читать не надо, главное пляски по страшнее и костер по-больше. Доверься интелектуальности северных богов!
10
19 августа 2006 года
Freeman
3.2K / / 06.03.2004
[QUOTE=Green] Доверься интелектуальности северных богов![/QUOTE]
Буква "р" пропущена.
6.6K
20 августа 2006 года
Scaiman
126 / / 25.07.2006
Объясните как в переменную "Bufer " загрузить то что находится в ex или eax
Bufer db 700 dup (?)
...
invoke FindResource,hInstance,100,RT_RCDATA
mov res,eax
invoke LoadResource,hInstance,res
mov ex,eax
354
21 августа 2006 года
ШпиЁн
468 / / 19.02.2006
Э-э-э... не совсем понятно что ты делать хочешь. Найти ресурс, загрузить его. но надо еще LockResource, вот она то и вернет указатель char *.

вот на С++
Код:
HRSRC hResLoad;
HANDLE hExe;        
HRSRC hRes;        
HANDLE hUpdateRes;
char *lpResLock;    
BOOL result;
 
hExe = LoadLibrary("hand.exe");
if (hExe == NULL) MessageBox(0, "Could not load exe.", "", MB_OK);
 
hRes = FindResource(hExe, "AboutBox", RT_DIALOG);
if (hRes == NULL) MessageBox(0, "Could not locate resource.", "", MB_OK);
 
hResLoad = LoadResource(hExe, hRes);
if (hResLoad == NULL) MessageBox(0, "Could not load resource.", "", MB_OK);
 
lpResLock = LockResource(hResLoad);
if (lpResLock == NULL) MessageBox(0, "Could not lock resource.", "", MB_OK);
}


На асме конечно все будет немного по другому. Главное чтобы твоих 700 байт в буфере хватило для ресурса, может быть переполнение и программа вылетит.
6.6K
21 августа 2006 года
Scaiman
126 / / 25.07.2006
LoadResource В случае успеха ворвращает дескриптор глобальной памяти, содержащей данные связанные с ресурсом. она вазращает чило но как по нему всё загрузит в буфере я вот этого понять немагу.
354
21 августа 2006 года
ШпиЁн
468 / / 19.02.2006
эта функция уже возвращает указатель на данные.
LoadResource универсальна, а LoadAccelerators, LoadBitmap, LoadCursor и т.д являются ее частным случаем. Т.е в этом примере ресурс уже будет загружен в lpResLock. Так объясняется в MSDN.
6.6K
22 августа 2006 года
Scaiman
126 / / 25.07.2006
Есть ли где справочник п API ntdll.dll вроде _ZwQuerySystemInformation
Заранее спасибо
354
22 августа 2006 года
ШпиЁн
468 / / 19.02.2006
:-)))) половина функций недокументирована ;) На английском языке у меня вот что было...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог