C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Использование WinAPI
dEEp
Отправлено: 26.06.2005, 10:18


Дежурный стрелочник

Группа: Участник
Сообщений: 69



Скажите, как используют WinAPI в Builder'e?
Может пример приведёте?
Назовите те функции, которые могут быть полезными в программировании, или же киньте ссылки.
Thanks...
olegenty
Отправлено: 26.06.2005, 10:27


Ветеран

Группа: Модератор
Сообщений: 2412



Использованы и полезны могут быть практически все функции, это зависит от решаемой задачи. А ссылку... ну на:
Help->Windows SDK
Doga
Отправлено: 26.06.2005, 14:13


Мастер участка

Группа: Участник
Сообщений: 575



А лучше установить последнюю версию MSDN — Windows SDK в BCB оставляет желать лучшего smile.gif
Sl@Sh
Отправлено: 29.06.2005, 10:22


Мастер участка

Группа: Участник
Сообщений: 383



В билдере не все функции апишные реализрваны. Чтобы увидеть все просмотрите экспортируемые библиотечные функции библиотек WinAPI. Правда это туповатый вариант. Хелп всегда лучше.

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

И вообще исходники VCL на паскале гляньте. VCL что-то вроде оболочки, основаной на том же WinAPI.
esh
Отправлено: 29.06.2005, 15:03


Дежурный стрелочник

Группа: Участник
Сообщений: 71



QUOTE
В билдере не все функции апишные реализрваны.

А как они должны быть реализованы в Билдере? Они уже реализованы в стандартных библиотеках Винды, в .h Билдера они только описаны, я не припомню, чтобы в Билдере не была описана какая-либо функция, возможно я просто забыл, т.к. это исправляется за пару минут.

CODE
А в билдере конечно меньше чем у мсдн хелп, но есть куча функция которые вообще почти не используются.

Даже те функции, которые используются очень часто, в MSDN описаны лучше, MSDN у меня от Апреля 2003.

А например AWE в хэлпе Билдера вообще не описана, согласен, что используется довольно редко, но все-же используется, а без хэлпа там не разобраться.

CODE
И вообще исходники VCL на паскале гляньте. VCL что-то вроде оболочки, основаной на том же WinAPI.

Конечно, а разве есть другие приемлемые варианты?
Sl@Sh
Отправлено: 02.07.2005, 02:21


Мастер участка

Группа: Участник
Сообщений: 383



QUOTE (esh @ 29/06/2005, 15:03)
А как они должны быть реализованы в Билдере? Они уже реализованы в стандартных библиотеках Винды, в .h Билдера они только описаны, я не припомню, чтобы в Билдере не была описана какая-либо функция, возможно я просто забыл, т.к. это исправляется за пару минут.

1) Не придирайтесь к словам. Я как раз и имел ввиду описаны.

2) Все доступные нам в Билдере апишные функции хранятся в import32.lib и вот в ней объявлены далеко не все из возможных функций.

3) Даже МСДН не всё публикует и описывает. Кое-что остаётся недокументированым.
esh
Отправлено: 02.07.2005, 14:15


Дежурный стрелочник

Группа: Участник
Сообщений: 71



QUOTE
2) Все доступные нам в Билдере апишные функции хранятся в import32.lib и вот в ней объявлены далеко не все из возможных функций.

Давай пример smile.gif , думаю что можно легко исправить.

Я не издеваюсь, назови функцию, которая объявлена в стандартных заголовках MSVC, но ее нет в Билдере, просто очень интересно. Вроде постоянно API использую, а функций таких не помню. sad.gif Правда 90% dll я пишу в MSVC, может в них и были эти функции...

Отредактировано esh — 02/07/2005, 14:52
Sl@Sh
Отправлено: 03.07.2005, 02:39


Мастер участка

Группа: Участник
Сообщений: 383



Точно издеваетесь... Ну я вам вот что скажу
1) С примером сложновато т.к. я всегда использовал функции доступные в Билдере, а о недоступных знаю чисто теоретически

2) Вот специально для вас нашел книжку, где я это когда-то прочитал.
Называется она "Borland C++Builder 6 руководство разработчика" (Холингворт, Сворт, Кэшмэн, Густавсон). Может где увидите, не поленитесь заглянуть на раздел про WinAPI.

3) Я просто уверен, что вы даже из import32.lib далеко не всё использовали smile.gif
Sl@Sh
Отправлено: 03.07.2005, 22:08


Мастер участка

Группа: Участник
Сообщений: 383



Вот вам пример :
CODE

typedef int (CALLBACK* lpfn)(int, int);
lpfn serv_func;

HINSTANCE hDLL = LoadLibrary("kernel32.dll");
if (hDLL)
{
   serv_func = (lpfn)GetProcAddress(hDLL, "RegisterServiceProcess");
   if (serv_func) serv_func(GetCurrentProcessId(), 1);
}


Я его использовал чтобы замоскировать программу под win 98.

А теперь о функции RegisterServiceProcess :
1) В справке Win SDK билдера она есть
2) В import32.lib (и вообще везде) её НЕТ

Теперь верите ?
esh
Отправлено: 04.07.2005, 00:23


Дежурный стрелочник

Группа: Участник
Сообщений: 71



QUOTE
3) Я просто уверен, что вы даже из import32.lib далеко не всё использовали

Не все, только те, которые мне были нужны.

QUOTE
Вот вам пример :

typedef int (CALLBACK* lpfn)(int, int);
lpfn serv_func;

HINSTANCE hDLL = LoadLibrary("kernel32.dll");
if (hDLL)
{
  serv_func = (lpfn)GetProcAddress(hDLL, "RegisterServiceProcess");
  if (serv_func) serv_func(GetCurrentProcessId(), 1);
}

Под примером я понимал имя этой функции. Динамически загрузить библиотеку я и сам могу, поэтому
пример хороший, но мне нужен другой.

QUOTE
А теперь о функции RegisterServiceProcess :
1) В справке Win SDK билдера она есть
2) В import32.lib (и вообще везде) её НЕТ

Теперь верите ?


Не убедил, эту функцию я знаю. В Visual Studio 2003 и в MSDN (тоже 2003 года) о RegisterServiceProcess нет упоминаний, т.к.
этой функции нет в Win2000/XP, а скорее всего и в любой Винде на основе NT. Это очень плохой пример!
Мне нужен пример НОРМАЛЬНОЙ функции API, которая есть в Win2k/XP, объявлена в MSVC, но ее нет в 6-м Билдере, я таких не помню.
Sl@Sh
  Отправлено: 04.07.2005, 02:49


Мастер участка

Группа: Участник
Сообщений: 383



QUOTE (esh @ 04/07/2005, 00:23)
Не убедил, эту функцию я знаю. В Visual Studio 2003 и в MSDN (тоже 2003 года) о RegisterServiceProcess нет упоминаний, т.к.
этой функции нет в Win2000/XP, а скорее всего и в любой Винде на основе NT. Это очень плохой пример!
Мне нужен пример НОРМАЛЬНОЙ функции API, которая есть в Win2k/XP, объявлена в MSVC, но ее нет в 6-м Билдере, я таких не помню.

Во-первых то что вам нужно ищите сами. Мне надоело вам что-то доказывать. Пример нормальный т.к. Билдер расчитан не только на линейку NT. И как я уже говорил эта функция там не добавлена.

Во-вторых вы начали крутить в другую сторону. Я вам про MSVC говорил что-то ? Да и потом я например привык доверять умным книжкам т.к. их пишут гораздо более опытные и знающие люди чем я.

P.S.: АПИ функций существует> 10 000. Может кто из других участников может вам сказать пример необходимой вам функции.

P.P.S.: Сама Microsoft, имхо, не о всех функциях пишет. Обычно всегда есть недокументированые функции.

Вернуться в Вопросы программирования в C++Builder