Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.04 c
2-1166876122
antonn
2006-12-23 15:15
2007.01.14
Пиктограммка в SpeedButton


2-1167121961
cvg
2006-12-26 11:32
2007.01.14
Почему-то окошко не активируется...


1-1164183881
IGo
2006-11-22 11:24
2007.01.14
Word - Как узнать номер строки в которой находится курсор ?


15-1166687290
Pazitron_Brain
2006-12-21 10:48
2007.01.14
Дом-страница


15-1166640174
cando
2006-12-20 21:42
2007.01.14
Midi files