掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Cで作ったDLLから戻り値(文字列)の取得について (ID:92034)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Cのソースです。 int fnWTSQuerySessionInformation(LPSTR lpBuffer, int WTSInfo){ typedef BOOL (WINAPI *LPWTSQUERYSESSIONINFORMATION)(HANDLE, DWORD, int, LPTSTR*, DWORD* ); DWORD dwProccessId ; DWORD SessionId ; BOOL rtncd ; LPSTR ppBuffer ; DWORD pBytesReturned ; dwProccessId = GetCurrentProcessId(); rtncd = ProcessIdToSessionId( dwProccessId, &SessionId ) ; // DLLをロード HINSTANCE hLib = LoadLibrary("wtsapi32.dll"); if(!hLib) { FreeLibrary(hLib); return 1; } // アドレスを取得 LPWTSQUERYSESSIONINFORMATION lpWTSAPIEntryPoint; // ポインタ lpWTSAPIEntryPoint = (LPWTSQUERYSESSIONINFORMATION)GetProcAddress(hLib, "WTSQuerySessionInformationA"); if(!lpWTSAPIEntryPoint) { FreeLibrary(hLib); return 1; } // 呼び出し BOOL bRet = (*lpWTSAPIEntryPoint)(0, SessionId, WTSInfo, &ppBuffer, &pBytesReturned ); FreeLibrary(hLib); strcpy(lpBuffer, ppBuffer); //ここにユーザ名が入る fclose(fp); return 0; } TEST_API int __stdcall fnUserName(LPSTR lpBuffer, DWORD* dwSize){ if( GetSystemMetrics( SM_REMOTESESSION ) ) lfnWTSQuerySessionInformation( lpBuffer, WTSUserName ); else GetUserName(lpBuffer, dwSize ); return 0; } です。NT系か9X系かでは判断せずに、 ターミナルサービス上で動いているかでやっています。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.