Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Как использовать функции API (http://forum.oszone.net/showthread.php?t=349115)

charon 30-06-2021 15:03 2961190

Как использовать функции API
 
С++ только учу.
на https://docs.microsoft.com/en-us/windows/win32/api/
есть исходные коды функций, на этом и все.
Кому не трудно подскажите как их использовать в С++? Те, что в листингах - собираются с ошибками, или вообще не хотят.
У меня
OS Windows 7x64
IDE Code::Block
компилятор GNU GCC
(gcc-11.1.0-64 ссылка)
Как пример, нужен листинг использования функции OpenSCManager.
OpenSCManagerA
Код:

SC_HANDLE OpenSCManagerA(
  LPCSTR lpMachineName,
  LPCSTR lpDatabaseName,
  DWORD  dwDesiredAccess
);

или
OpenServiceW (winsvc.h)
Код:

SC_HANDLE OpenServiceW(
  SC_HANDLE hSCManager,
  LPCWSTR  lpServiceName,
  DWORD    dwDesiredAccess
);

В принципе любой простенький! подойдет, лишь бы собрался без ошибок в GCC!.
Hello World не надо! :-)

P.S. может у кого уже готовый завалялся. На FASM тоже пойдет, но лучше С++. Книжка с листингами, тоже хорошо. Повторю - лишь бы собирались без ошибок.

iglezz 03-07-2021 17:55 2961354

charon,
менеджер сервисов с исходниками: https://git.nssm.cc/nssm/nssm

charon 04-07-2021 12:39 2961388

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

В данном случае это будет выглядеть так:
Код:

#include <windows.h>
#include <stdio.h>

int main()
{
SC_HANDLE  schSCManager; //инициализация

schSCManager=OpenSCManagerA(
  NULL,
  NULL,
  SC_MANAGER_ALL_ACCESS);

  if (NULL == schSCManager)
    {
    printf("OpenSCManager failed (%ld)\n", GetLastError());
    //закрываем дескриптор
    CloseServiceHandle(schSCManager);
    return 0;
    }
    //закрываем дескриптор
    CloseServiceHandle(schSCManager);
}

P.S. И книжку нашел с исходниками Побегайло. "Системное программирование в windows"
Если кому надо залью на облако.


Время: 23:42.

Время: 23:42.
© OSzone.net 2001-