スポンサーサイト

  • 2006.07.08 Saturday
  • -
  • -
  • -
  • by スポンサードリンク

一定期間更新がないため広告を表示しています


Win32API: あるプログラムが、コンソールアプリかどうかを取得

今作ろうとしてるツールで、指定されたプログラムファイルが、コンソールアプリケーションなのかそうでないのかを判断する必要があった。

この場合、SHGetFileInfo を使えばいいようだ。てことでこんなプログラムを作って動作確認。
/** GetExeType.cpp
 *
 *      compile: cl -GX GetExeType.cpp shell32.lib
 */

#include <windows.h>
#include <iostream>

int main(int argc, char *argv[]){
    if (argc != 2)
        return -1;

    std::cout << argv[1] << ": ";

    DWORD_PTR exe_type;
    SHFILEINFO file_info;
    exe_type = SHGetFileInfo(argv[1], 0, 
        &file_info, sizeof(file_info), SHGFI_EXETYPE);

    if (exe_type == 0)
        std::cout << "noexecutable file or error" << std::endl;
    else if (!HIWORD(exe_type))
        std::cout << "console application" << std::endl;
    else
        std::cout << "windows application" << std::endl;

    return 0;
}
これでいいみたい。

ネイティブイメージジェネレータ

ネイティブイメージジェネレータを使ってみた。

自分で .NET Framework を使うことは今のところないけれど、最近 .NET アプリが増えてきた。で、増えてきたのはいいけれど、やたら重い。アプリ自体は便利なので、なんとかして欲しかったところ。

でだ。僕にとって一番重要な .NET アプリを ngen してみた。
> C:¥WINDOWS¥Microsoft.NET¥Framework¥v1.1.4322>ngen.exe "c:¥Program Files¥Poderosa¥Poderosa.exe"

   Microsoft (R) CLR Native Image Generator - Version 1.1.4322.573
   Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.
   Poderosa, Version=1.0.1944.14455, Culture=neutral, PublicKeyToken=null <debug> <debug optimized>

お、早い早い。なかなか早くなりました。これ、今後は必須になりそう。

UPDATE: al

前に作った al.exe を一部変更。
cfgファイルの在り処をスムーズに取得できるようにした。

MSDNをなんとなく見ていったら、GetModuleFileName API で、カレントプロセスのファイルパスがとれることを発見。知らなかった。ださ。

この変更によって、DOS窓でもスムーズに al.exe が使えるようになりました。やったね!こんなソフト誰も使わないけど、僕にとっては一番のコマンド型ランチャなんだい。

calendar
   1234
567891011
12131415161718
19202122232425
2627282930  
<< November 2017 >>
sponsored links
selected entries
categories
archives
recent comment
recent trackback
recommend
recommend
profile
search this site.
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM