C/C++開発
今更、、という感じですが、VisualStudio 2010 C++(VC10) で作成したバイナリはWindows2000では動かないようです。 動かそうとすると、「xxxx.exeは有効なWin32アプリケーションではありません。」と怒られます。 有名な話らしいですが、C++系アプリを殆ど作…
当初、下記のようにしてたらアクセス違反の例外となりました。 TCHAR path[] = _T("d:\\a.txt"); TCHAR file[1024] = _T("d:\\a.txt"); wcscat( _T("notepad.exe "), file ); で、よく考えたら、wcscat は第一引数に、第二引数の文字列を追加するんですよね…
(VC++)自身のアプリケーションファイルのexeファイルのパスを取得する方法で、Windows API の GetModuleFileName 関数を使うと自身のフォルダパスを取得することができることを書きました。 で、今回はファイル名を含むフルパスから、フォルダパスを取得する…
現在ログインしている Windows のユーザ名を取得する方法です。 Windows API の GetUserName関数 を使えばいいようです。 使い方はこんな感じです。 //現在のユーザ名取得 TCHAR user[1024]; DWORD dwUserSize; // 取得したユーザ名の文字列の長さ if ( ! Ge…
(C++)別ユーザでプロセスを起動するにて、Windows API の CreateProcessWithLogonW 関数を使うことで別ユーザ権限でプロセスを起動できることを書きました。 で、このコードをコンソールアプリケーションとしてビルドしテストしたところ、特定のマシンだけ動…
Windows API を使って別のユーザでプロセスを起動する方法です。 (.Net を使えば、ProcessStartInfo.UserName や ProcessStartInfo.Password 等で簡単にできるのかもしれませんが、.Net Framework が入ってない環境を考慮して C++ と Windows API で作成しま…
Win32 API でファイル存在チェックを行う方法です。 PathFileExists( ファイル名 )関数を使えばいいようです。 存在すれば true ,しなければ false ( C的には1かそれ以外か) が返るようですね。 参考: WINDOWS忘却録 PathFileExists -ファイルの存在を調べる…
%systemroot% や %programfiles% との環境変数パスをC++で展開する方法です。 Win32 API の ExpandEnvironmentStrings 関数を使えばいいようです。 注意点は %appdata% だと %%appdata%% というように%でエスケープしないといけないという点です。 こんな感…
年に1,2回ほどしか触らない C++ は相変わらず苦手な3流プログラマです。。 設定が入ってるテキストファイルを開き中身を変更するアプリを作ってるわけですが、早速ファイルオープンのところで詰まりました。 とりあえずWindows向けアプリということで Win32…
%systemroot% とか %ProgramFiles% とかの環境変数のパスをC++で展開する方法です。 Windowsにはそれ用のAPIが用意されているようなので、それを使えばいいようです。 APIは ExpandEnvironmentStringsを使います。 使い方はこんな感じです。 //MFCでCString…
(VC++).Net Framework がインストールされているかどうかを調べる方法で書いてる要件を満たすため、過去4回いろいろ書いてきましたが、それらのまとめとして、実際の C++ のコードを載せておきます。 動きとしては、.Net Framework 2.0 がインストールされて…
exeと同じ場所にある別のexeをキックする要件だったので、ShellExecute で引数に ".\キックするexe名" としたかったのですが、これだとどうもカレントディレクトリから見た相対パスになるので、このexe自体が別のアプリから呼ばれてカレントディレクトリが変…
Visual Studio 2008 では(VS 2005でも同じ) MFC の関数や、Win32API 関数で引数に文字列を渡すとき _T("文字列") と書かないといけないようです。 たしか、Visual C++ 6.0 のときはいらなかったよなーと思ってたので、ちょっと調べてみました。 ちなみに、_T…
要件は、前回の最初に書いた通りです。 今回はインターネットでマイクロソフトのサーバにつながる状態かどうかを調べる方法です。 実装は、CSocket クラスを用いることで、簡単にできるようです。 参考にさせてもらったのは、ソケット(バイトストリーム)を使…
現在のプロジェクトで作成中のアプリケーションは VB.Net で作っていますが、当然 .Net Framework がインストールされていないと動きません。 Visual Studio のセットアッププロジェクトで、必須コンポーネントととして .Net Framework を含めることができま…
久しぶりに C/C++ && MFC アプリケーションを作ることとなりました。 (前に作ったのは Visual C++ 6.0 時代。大昔な気がしますね) で、とりあえず MFC を使って何も加工してないVSのウィザードが作り出すダイアログアプリケーションを、セットアップしたての…