Entries
VCでの開発中に、Windowsにログインしているユーザー権限を調べるAPIがあるかを調べてもらいました。
非公開APIだそうです(^_^;)
BOOL IsUserAnAdmin(VOID)
TRUE :Administrator権限
FALSE:Administrator権限以外
Windows2000/WindowsXPとも動作確認済み。
詳しい説明は、MSDNサイトで。
○IsUserAnAdmin Function
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/isuseranadmin.asp
注意として、ビルドにPlatform SDKが必要のようです。
■ブログランキング
↓もっと簡単にプログラムできないかな?
▲こんな奴でもプログラマー (^^ゞ
↑ココをクリックするとトップへ戻れます。
以下のサンプルソースのように、LONGLONG型(64ビット)を変換を行うと出力結果が、正常に出力されません。
▼サンプルソース
/////////////////////////////////////////////////////////////////////////////
// LONGLONG型を文字列データに変換
LONGLONG llData = 0x0000FFFFFFFFFFFF;
CString strWork;
strWork.Format( "Data = %12X", llData );
▼出力結果
Data = 0x0000FFFFFFFF
そこで対応方法として以下のサンプルソースのように、変換を行うと
出力結果が、正常に出力されます。
▼サンプルソース
/////////////////////////////////////////////////////////////////////////////
// LONGLONG型を文字列データに変換
LONGLONG llData = 0x0000FFFFFFFFFFFF;
CString strWork;
strWork.Format( "Data = %I64X", llData );
▼出力結果
Data = 0x0000FFFFFFFFFFFF
ちょっとした事ですが、かなり迷いました。(苦笑)
▲こんな奴でもプログラマー (^^ゞ
↑ココをクリックするとトップへ戻れます。
色々なサイトを調べていたら、日本語で訳されたページを発見!
とても役に立ちました。
○いとのページ・Winsock Error Code
http://homepage1.nifty.com/yito/anhttpd/winsock_error.html
○いとのページ・インストール、オプション設定、エラーメッセージ
http://homepage1.nifty.com/yito/anhttpd/
謝辞:
いとさんのページとても参考になりました。
ココを借りお礼申し上げます。
▲こんな奴でもプログラマー (^^ゞ
↑ココをクリックするとトップへ戻れます。
ちょっとしたテクニックです。
Windowsには主に使用されるな時間は以下です。
▼システム時間
Windowsは、GMT/UTCをシステム時間と呼ぶそうです。
▼ローカル時間
ローカル時間は、パソコンが起動している現地時間です。
日本なら日本の時間になります。
▼ファイル時間
ファイルにある最終更新時間のようです。
ファイルに含まれる時間は、ファイル時間で格納されています。
さて、VCにて時間の取得する方法として以下があります。
1) クラスを使用する方法
2) APIを使用する方法
早速、どのように使うか見てみましょう。
■クラスを使用する方法
「CTimeクラス」を使用します。
▼サンプルソース
/////////////////////////////////////////////////////////////////////////////
// 現在時刻を取得する
CTime nowTime = CTime::GetCurrentTime();
m_strTime.Format( "%04d%02d%02d%02d%02d%02d",
nowTime.GetYear(), // 年
nowTime.GetMonth(), // 月
nowTime.GetDay(), // 日
nowTime.GetHour(), // 時
nowTime.GetMinute(), // 分
nowTime.GetSecond() ); // 秒
※詳しい使用方法はVCヘルプを参照してください。
クラスを使用するので簡単に使用する事ができますが、一点だけ
使い難いところがあります。
「msec」単位が取得できない。
通常時間の取得等の場合には問題無いかと思いますが、アプリケーション
のデバッグ用ログファイルを出力する場合、msec単位が必要になる場合が
あります。
例) データの送受信タイミング、実行時間計測
その場合は、APIを使用する方法があります。
■APIを使用する方法
タイマAPIとして、「GetLocalTime()」と「GetSystemTime()」があります。
時間の設定を「SYSTMETIME」により行う事ができます。
これらのAPIを使うことにより、msec単位まで時間を取得する事ができます。
▼サンプルソース
/////////////////////////////////////////////////////////////////////////////
// 現在時刻設定
CString nowTime;
SYSTEMTIME sysTime;
GetLocalTime( &sysTime );
nowTime.Format( "%4d/%02d/%02d %02d:%02d:%02d.%03u",
sysTime.wYear, // 年
sysTime.wMonth, // 月
sysTime.wDay, // 日
sysTime.wHour, // 時
sysTime.wMinute, // 分
sysTime.wSecond, // 秒
sysTime.wMilliseconds ); // msec
※詳しい使用方法はVCヘルプを参照してください。
■おわり
実際タイマを使う場合、クラスを使用するか、APIを使用するか迷います。
僕の場合は、使用方法によって分けて使っています。
▲こんな奴でもプログラマー (^^ゞ
↑ココをクリックするとトップへ戻れます。
これらのサイトがないと、仕事ススミマセン。
感謝、感謝です。
○GoldFish
http://www.athomejp.com/goldfish/
○猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
○週刊Bravo!! Programming Tips
http://homepage2.nifty.com/DSS/VCPP/API/APIIndex.htm
○VC Tips
http://www.geocities.co.jp/SiliconValley/7977/memo/tips_vc.html
○Microsoft Visual Studio.net (おまけ)
http://www.microsoft.com/japan/msdn/vstudio/
※上記のサイトを参考にさせて頂きました。とても参考になりました。
この場を借りて謝辞します。
▲こんな奴でもプログラマー (^^ゞ
↑ココをクリックするとトップへ戻れます。
