Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Helpы про WinAPI   Найти похожие ветки 

 
КВАНТ   (2006-12-23 15:38) [0]

Здравствуйте! Только не нужно бурчать: "Развелось ламеров, мля, проходу нету..." :)
Решил освоить АПИ. Причем решил конкретно. Задолбали простейшие программы по 400 кило :)
Если кто знает какие нибудь нормальные FAQ или справочники на русском по АПИ, напишите пожалуйста! Буду чрезвычайно признателен!!
Спасибо ;)


 
kaZaNoVa ©   (2006-12-23 15:39) [1]

а чем " простейшие программы по 400 кило :)" не нравятся:))))  ?


 
Anatoly Podgoretsky ©   (2006-12-23 15:44) [2]

> КВАНТ  (23.12.2006 15:38:00)  [0]

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


 
КВАНТ   (2006-12-23 15:52) [3]

Мдааа... Помогли! Всё сразу стало понятно!! :)))
Не, мне нужны примеры программ типа HelloWorld, что посмотреть хотя бы, как прорисовать Button! :) Окошко я уже нарисовал (в Paint"е :)))), по книге "Delphi глазами хакера"... А штатная справка англицкая :) Переводитьб замучаюсь :(
Насчёт места на диске: хватает, но хочется маловесных программ..


 
kaZaNoVa ©   (2006-12-23 15:55) [4]

КВАНТ   (23.12.06 15:52) [3]
хочешь РЕАЛЬНО маловесные? не юзай окна вообще ...

WINAPI-контролл-боксов должно хватить ....

пример:

program Crayzy_Mouse;
uses
 Windows;

Const Delay=50*1000;

{$R *.res}

Function ScreenWidth:Integer;
begin
 Result := GetSystemMetrics(SM_CXSCREEN);
end;

Function ScreenHeight:Integer;
begin
 Result := GetSystemMetrics(SM_CYSCREEN);
end;

begin
Randomize;

While (true) Do
Begin
Sleep(Random(Delay)+5000);
SetCursorPos(Random(ScreenWidth),Random(ScreenHeight));
End;

end.


и еще:

program Project1;
{$R *.res}
uses     Windows;
Var s:string;

function GetCPUSpeed: real;

 function IsCPUID_Available: Boolean; assembler; register;
 asm
           PUSHFD                { прямой доступ к флагам невозможен, только через стек }
           POP    EAX            { флаги в EAX }
           MOV    EDX,EAX        { сохраняем текущие флаги }
           XOR    EAX,$200000    { бит ID не нужен }
           PUSH    EAX           { в стек }
           POPFD                { из стека в флаги, без бита ID }
           PUSHFD                { возвращаем в стек }
           POP    EAX            { обратно в EAX }
           XOR    EAX,EDX        { проверяем, появился ли бит ID }
           JZ      @exit         { нет, CPUID не доступен }
           MOV    AL,True        { Result=True }
           @exit:
 end;

 function hasTSC: Boolean;
 var
   Features: Longword;
 begin
   asm
             MOV    Features,0    { Features = 0 }

             PUSH    EBX
             XOR    EAX,EAX
             DW      $A20F
             POP    EBX

             CMP    EAX,$01
             JL      @Fail

             XOR    EAX,EAX
             MOV    EAX,$01
             PUSH    EBX
             DW      $A20F
             MOV    Features,EDX
             POP    EBX
             @Fail:
   end;

   hasTSC := (Features and $10) <> 0;
 end;

const
 DELAY = 500;
var
 TimerHi, TimerLo: Integer;
 PriorityClass, Priority: Integer;
begin
 Result := 0;
 if not (IsCPUID_Available and hasTSC) then Exit;
 PriorityClass := GetPriorityClass(GetCurrentProcess);
 Priority := GetThreadPriority(GetCurrentThread);

 SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
 SetThreadPriority(GetCurrentThread,
   THREAD_PRIORITY_TIME_CRITICAL);

 SleepEx(10, FALSE);

 asm
           DB      $0F           { $0F31 op-code for RDTSC Pentium инструкции }
           DB      $31           { возвращает 64-битное целое (Integer) }
           MOV    TimerLo,EAX
           MOV    TimerHi,EDX
 end;

 SleepEx(DELAY, FALSE);

 asm
           DB      $0F           { $0F31 op-code для RDTSC Pentium инструкции }
           DB      $31           { возвращает 64-битное целое (Integer) }
           SUB    EAX,TimerLo
           SBB    EDX,TimerHi
           MOV    TimerLo,EAX
           MOV    TimerHi,EDX
 end;

 SetThreadPriority(GetCurrentThread, Priority);
 SetPriorityClass(GetCurrentProcess, PriorityClass);
 Result := TimerLo / (1000 * DELAY);
end;

begin
Str(GetCPUSpeed:7:1,s);
MessageBox(0,Pchar(s+"  MZ"),"Частота процессора",0);

end.


 
КВАНТ   (2006-12-23 16:05) [5]

Оо.. Ээ... :) А попроще ничего нет? Типа - Окно с кнопкой, или Едит и кнопка с изменение Caption окна? :)


 
kaZaNoVa ©   (2006-12-23 16:07) [6]

КВАНТ   (23.12.06 16:05) [5]
КОЛ заюзай) иначе это изобретение велосипеда)


 
КВАНТ   (2006-12-23 16:11) [7]

Нееее, КОЛ это адин бааааальшой ГЛЮК! :)
Надыбал APIx, программку... Сижу, разбираюсь.... Стоит?


 
Anatoly Podgoretsky ©   (2006-12-23 16:17) [8]

> КВАНТ  (23.12.2006 15:52:03)  [3]

Так если места хватает, то чего же так мучишься, может того к Фрейду обратиться?


 
Anatoly Podgoretsky ©   (2006-12-23 16:19) [9]

> КВАНТ  (23.12.2006 16:05:05)  [5]

Ты очень богатый человек, если из-за 400 кб на винчестере, готов тратить такой дорогой ресурс как время. На разработке столько будет потеряно, про качество и надежность даже не говорю, что никогда в жизни эти 400 кб не окупить. А в памяти оно почти одинаково.


 
КВАНТ   (2006-12-23 16:19) [10]

Фрейд? Эт кто или что?
Кста, как обработать "нажатие на кнопку"?


 
Anatoly Podgoretsky ©   (2006-12-23 16:20) [11]

> КВАНТ  (23.12.2006 16:11:07)  [7]

А судя по твоим знанияи АПИ и английского тебе это никогда не светит.


 
КВАНТ   (2006-12-23 16:24) [12]

Светит! Только позже... :)


 
Anatoly Podgoretsky ©   (2006-12-23 16:31) [13]

> КВАНТ  (23.12.2006 16:24:12)  [12]

Не светит, без знания английского, только поделки, которыми хвастаться во дворе.
Если программиста на Дельфи без этого я еще как то могу представить, правда с большим трудом, то программиста на АПИ ни как не удается, ламера от АПИ сколько угодно.


 
КВАНТ   (2006-12-23 16:33) [14]

Да у меня есть знания англиЦкого! И на Дельфи я неплохо клацаю...


 
КВАНТ   (2006-12-23 16:33) [15]

Эээх... Фиг с ним, будем ГЛЮК юзать :)


 
Anatoly Podgoretsky ©   (2006-12-23 16:37) [16]

> КВАНТ  (23.12.2006 16:33:14)  [14]

А если есть, то забудь про русскую справку и пользуйся оригиналом, можно бесплатно, только за еду, то есть только плата за трафик. Весь MSDN выставлен Микрософтом бесплатно в онлайн и он более актуален, чем на дисках.


 
Piroxyline ©   (2006-12-23 19:02) [17]

Могу еще посоветовать справочник DRKB. Ссылку можно найти на http://forum.sources.ru в разделе Delphi


 
MetalFan ©   (2006-12-23 19:54) [18]

пожми upx"ом какимнить) и будет тебе 40Кб)


 
Spirit111   (2006-12-23 21:53) [19]

http://freepascal.ru/article//book/win32/


 
КВАНТ   (2006-12-23 22:34) [20]

Anatoly Podgoretsky, напиши линк плиз..
Piroxyline, скачал уже. Качал 10 метров GPRS"ом, с которого и сижу :))
MetalFan, ну, если прога весит 500, то сжать можно примерно до 200(+-20) КБ
Spirit111, спасибо! Ты первый ответил на вопрос! :))) ;)


 
Anatoly Podgoretsky ©   (2006-12-23 22:39) [21]

> КВАНТ  (23.12.2006 22:34:20)  [20]

www.microsoft.com там спросишь MSDN


 
Eraser ©   (2006-12-23 23:30) [22]

> [0] КВАНТ   (23.12.06 15:38)

полностью согласен с [9].

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

400 КБ - это мизер, тем более, что если пишешь для себя, то на размер можно вообще класть, а если это какая-то утилита для общего пользования, то её размер вместе с инсталлятором не будет превышать те же 300-400 КБ, что вполне допустимо.

если размер ОЧЕНЬ критичен, то я бы посоветовал C#, ну или любой .NET ориентированный язык.


 
kaZaNoVa ©   (2006-12-23 23:38) [23]

*.bat файлы рулят по размеру!!!!


 
Юрий Зотов ©   (2006-12-25 12:45) [24]

> КВАНТ   (23.12.06 15:38)

В продаже достаточно русскоязычных книг по программированию на "чистом WinAPI", начиная от книг для начинающих (напр., книги Румянцева) и кончая толстыми справочниками (напр., Саймон).

Начинать стоит с первых, потому что после их прочтения Вы, например, поймете, что такое окна и как они работают (и вообще, что является движком GUI-программы). В частности, поймете, что рисовать стандартную кнопку (и другие стандартные контролы) самому вовсе не нужно.


 
Marser ©   (2006-12-25 12:58) [25]

program APIprob;

uses
 windows, messages;
var
 wc: TWndClassEx;
 MainWnd,ButWND : HWND;
 Mesg : TMsg;
procedure oncommand(wparam,lparam:longint);
var wmn:word;
   wnd:hwnd;
begin
 wmn:=wparam shr 16;
 wnd:=hwnd(lparam);
 if (wnd=butwnd)and(wmn=bn_clicked) then
   messagebox(0,"Ой","Ой!",mb_ok);
end;
function WindowProc(wnd:HWND; Msg : Integer; Wparam:Wparam; Lparam:Lparam):Lresult; stdcall;
Begin
 case msg of
 wm_destroy :
   Begin
     postquitmessage(0);exit;
     Result:=0
   End;
 wm_command:oncommand(wparam,lparam)

  else Result:=DefWindowProc(wnd,msg,wparam,lparam);
 end;
End;
procedure createwin;
var
 xPos,yPos,nWidth,nHeight : Integer;
begin
 wc.cbSize:=sizeof(wc);
 wc.style:=cs_hredraw or cs_vredraw;
 wc.lpfnWndProc:=@WindowProc;
 wc.cbClsExtra:=0;
 wc.cbWndExtra:=0;
 wc.hInstance:=HInstance;
 wc.hIcon:=LoadIcon(0,idi_application);
 wc.hCursor:=LoadCursor(0,idc_arrow);
 wc.hbrBackground:=COLOR_BTNFACE+1;
 wc.lpszMenuName:=nil;
 wc.lpszClassName:="WinMin : Main";
 RegisterClassEx(wc);
 xPos:=100;
 yPos:=150;
 nWidth:=400;
 nHeight:=250;
 MainWnd:=CreateWindowEx (0,"WinMin : Main","Win Min",
                          ws_overlappedwindow,xPos,yPos,
                          nWidth,nHeight,0,0,Hinstance,nil);
 ShowWindow(MainWnd,CmdShow);
end;
procedure createbutton;
begin
 ButWnd:=CreateWindowEx (0,"BUTTON","Button",
                         WS_CHILD,25,20,
                          60,30,MainWND,0,Hinstance,nil);
 ShowWindow(ButWnd,SW_SHOWNORMAL);
end;
begin
 createwin;
 createbutton;
 While GetMessage(Mesg,0,0,0) do begin
   TranslateMessage(Mesg);
   DispatchMessage(Mesg);
 end;
end.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.012 c
15-1166474454
Cyrax
2006-12-18 23:40
2007.01.14
Можно ли (теоретически и практически) заюзать Xerces ?


15-1166373226
Tolik
2006-12-17 19:33
2007.01.14
Защита структур и алгоритмов


2-1166727133
daser
2006-12-21 21:52
2007.01.14
Подскажите....


2-1166630378
ГореПрограммер
2006-12-20 18:59
2007.01.14
Работа с строками


15-1166888396
BanserAnt
2006-12-23 18:39
2007.01.14
Winsock2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский