RSS

月別アーカイブ: 11月 2010

DLLをロードして使う

/*  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

 

タグ: , , ,

Get Process Name from Process ID.

/*  Get Process Name from Process ID. */
/*    Build: cl /EHsc EnumProcesses.cpp psapi.lib  */
#include <stdio.h>
#include <windows.h>
#include <psapi.h>

#define N 1024

int main()
{
 DWORD idProcess[N];
 DWORD cb = sizeof(DWORD) * N;
 DWORD cbNeeded;
 HMODULE hModule;
 DWORD cbReturned;
 WCHAR szBasename[N];

 if (EnumProcesses(idProcess, cb, &cbNeeded))
 {
   printf_s("Process ID : Process Name\n");
   DWORD* p = idProcess;
   int n = cbNeeded / sizeof(DWORD);
   for (int i = 0; i < n; i++)
   {
     HANDLE  hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, idProcess[i]);
     if (hProc == NULL)
       continue;
     if (EnumProcessModules(hProc, &hModule, sizeof(hModule), &cbReturned ))
     {
       ZeroMemory(szBasename, sizeof(szBasename));
       if (GetModuleBaseName(hProc, hModule, (LPSTR)szBasename, sizeof(szBasename)) != 0)
       {
         printf_s("%d : %s\n", idProcess[i], szBasename);
        }
      }

       CloseHandle(hProc);
     } 
   }
   else
   {
     printf_s("Failed.\n");
   }

 return 0;
}
 
コメントする

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

 

タグ: , , ,

PowerShellでのスクリプト実行

 Windows 7では、スタートメニューの「アクセサリ」の中にWindows PowerShellというのがあるのを知っていますか?
 これは次世代コマンドプロンプトのようなものです。よって、コマンドプロンプトの代わりに使えます。でも、上級者でないとコマンドプロンプトに対する有り難味は感じないかもしれません。どこが違うかというと、ザックリとした言い方をすればコマンドの数が増えたのと、コマンドどうしの連携がよくなったとか、いろいろあります。コマンド一覧はget-commandコマンドで表示できます。コマンドの詳細はget-help(単にhelpでもよい)のパラメータにコマンド名を入れて実行すれば表示されます。get-alias(単にaliasだけでもよい)コマンドを実行すると、コマンドの短縮名(別名)が表示できます。

 なお、Windows VistaやXpではMicrosoftのサイトからダウンロードすれば、使用できるようになります。

 PowerShellスクリプトの拡張子ですが、現在のPowerShellのバージョンが2.0にもかかわらず.ps1です。なぜか.ps2ではありません。

 ところで、PowerShellスクリプトを実行しようとすると、次のようなエラーが出ます。

スクリプトの実行がシステムで無効になっているため、ファイル D:\...\sample.ps1 を読み込めません。詳細については、「get-Help about_signing」と入力してヘルプを参照してください。

これはデフォルトでps1スクリプトの実行ができないようになっているためです。PowerShellを「管理者として実行...」で起動しなおしてから、

 Set-ExecutionPolicy RemoteSigned

を実行するとスクリプトの実行を有効にできます。

用語 'sample.ps1' は、コマンドレット、関数、操作可能なプログラム、またはスクリプト ファイルとして認識されません。用語を確認し、再試行してください。

というエラーが出ます。これはカレントディレクトリをPowerShellが検索しないためです。これは次のようにすれば回避できます。

 .\sample.ps1
 
コメントする

投稿者: : 2010/11/27 投稿先 PowerShell

 

タグ: ,

iGoogle gadget Hello World

<?xml version="1.0" encoding="UTF-8" ?> 
<Module>
 <ModulePrefs title="Hello World!" />
 <Content type="html">
 <![CDATA[
 <div style="font-size:24px;">Hello World!</div>
 ]]> 
 </Content> 
</Module>
 
1件のコメント

投稿者: : 2010/11/24 投稿先 未分類

 

タグ: ,

PHP Memo

INIファイルで指定したフォルダ名に含まれるテキストファイルを一覧表示し、それをクリックすると表示するPHPアプリケーション

/My Document/Develop/Web/php-memo.zip

使い方

含まれるファイルを適切なフォルダにコピーし、INIファイルを編集する。

 
コメントする

投稿者: : 2010/11/24 投稿先 PHP

 

タグ: ,

PHP pages

pages.php Readme.txt

/My Document/Develop/Web/pages.zip

ページの自動生成用PHPプログラム
インストール
このディレクトリ内のファイルをウェブサイトのルートへコピーする。
mlib.phpをエディタで開いて次の2箇所の定数を変更する。
LOG: ログファイルのパス名
CONF: 構成ファイルのパス名

構成ファイルの内容を環境に合わせて編集する。

contentフォルダをindex.phpと同じディレクトリに作成し、その中にコンテンツ
ファイルを作成する。コンテンツファイルは単なるテキストファイル(拡張子は
.txt)である。コンテンツファイルは複数作成してもよい。複数ある場合はファイル名
の順にトップページに表示される。
コンテンツファイルの中には、文字飾りとハイパーリンク、イメージHTMLタグが
使用できる。

ページの追加方法
ディレクトリを作りpage.xmlを追加する。現在のバージョンでは項目はtitleのみである。

(例)
<?xml version=”1.0″ encoding=”utf-8″ ?>
<root>
<title>ページタイトル</title>
</root>

コンテンツファイル(.txt)を追加する。コンテンツファイルにはHTMLタグを使用してよい。
コンテンツファイル(.txt)が複数ある場合は、表示順を決めるためファイル名を01_????.txtなどとするとよい。

ページを呼び出すときは、次のようにする。
(例) http://localhost/index.php?dir=test

ここでtestがディレクトリ名に相当する。

 

 

 

 

 
コメントする

投稿者: : 2010/11/24 投稿先 PHP

 

MySQL Information Schema

[MySQL Information Schema]
(encoding=utf-8)

/My Document/Develop/Web/mysql_information_schema.zip

!概要

MySQLのINORMATION_SCHEMAデータベースの内容を簡易表示するPHPアプリケーションです。

!インストール

配布ファイルを適当なディレクトリ(説明のために名称をmysql-isとする)を作ってコピーする。

ディレクトリmysql-isのパーミッションは755とする。

$ sudo chmod 755 mysql-is

mysql-is内のファイルのパーミッションを644とする。

$ sudo chmod 644 mysql-is/*

mlib.phpを開いて前のほうにあるdefine文を変更とする。

define(LOG, ….);  // ログファイルのパス名
define(CONF, …);  // 構成ファイル(iniファイル)のパス名

構成ファイル(名前は前述のdefineで定義されている通り)を開いて、実行環境に合わせて変更する。

MySQLのユーザIDとパスワードは必ず変更する。
userid=
password=

menuの変更は不要。

ブラウザからURLを入力してindex.phpが開けることを確認する。

 

 
コメントする

投稿者: : 2010/11/24 投稿先 PHP

 

タグ: ,