RSS

DLLをロードして使う

30 11月
/*  LoadLibrary / UNZIP32.DLL */
#include <stdio.h>
#include <windows.h>
#include "UNZIP32.H"

#define NSIZE 1024

HMODULE hModule;
LPCSTR cszDLL = ".\\UNZIP32.DLL";
char buff[NSIZE];
char cmd[512];
int (WINAPI *FUnZip)(const HWND, LPCSTR, LPSTR, const DWORD);

/* Main program */
int main(int argc, wchar_t *argv[])
{
 if (argc < 2)
 {
 printf_s("Usage: パラメータとしてZIPファイルを指定する。\n");
 return 9;
 }

 // DLLをロードする。
 hModule = LoadLibrary(cszDLL);
 if (hModule == NULL)
 {
 printf_s("LoadLibrary が失敗した。\n");
 return 9;
 }

 // UnZip関数のアドレスを取得する。
 FUnZip = (int (WINAPI *)(const HWND, LPCSTR, LPSTR, const DWORD))GetProcAddress(hModule, TEXT("UnZip"));
 if (FUnZip == NULL)
 {
 printf_s("GetProcAddress が失敗した。\n");
 goto A;
 }

 // ZIPファイルの中身を表示
 strcpy_s(cmd, sizeof(cmd), "-lv ");
 strcat_s(cmd, sizeof(cmd), (const char*)*++argv);
 printf_s("%s\n", cmd);

 ZeroMemory(buff, sizeof(buff));
 if (FUnZip(NULL, cmd, buff, sizeof(buff)) == 0)
 {    
 printf_s("%s\n", buff);
 }
 else
 {
   printf_s("UnZip関数がエラーを返した。\n");
 }

 // DLLを解放する。
A:
  FreeLibrary(hModule);
  printf_s("正常終了\n");
  return 0;
}
 
コメントする

投稿者: : 2010/11/30 投稿先 C

 

タグ: , , ,

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中