• ベストアンサー

LockWindowStation & UnlockWindowStation

WindowsのAPIでUser32.dllにある関数ですが、公開されていない関数に LockWindowStationとUnlockWindowStationがあります。 検索してみたのですが、関数の存在はわかるものの 関数の仕様がわかりません。 機能・引数・戻り値と、どなたか、わかる方いらっしゃいますか? 宜しく御願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.3

> LockWindowStation Locks switching desktops. Only the logon application is allowed to call this function. デスクトップの切り替えをロックします。 この機能はログオン アプリケーションでのみ実行が許可されます。 WindowStation については、CreateWindowStation API などを参考にしてください。

参考URL:
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_CreateWindowStation.asp?frame=true
Williamtel
質問者

お礼

遅くなりました。 ありがとう御座います。

その他の回答 (2)

  • mikaemi
  • ベストアンサー率50% (33/65)
回答No.2

質問者さんは、仕様(とくに機能)を知りたいのですよね? 実際に何を目的とした関数なのか、とか。 検索エンジンで見つかるページなどにも、「全ウィンドウのフォーカスがなくなった以外に、何も起こってないように思える」、「常に true を返すだけのスタブじゃないか」だとかありますから^^

Williamtel
質問者

補足

返答(回答)ありがとうございます。 そうなんです・・ しかし、それでも、機能が理解し難い・・と それが、気持ちです。 いまいち、機能が理解できません。 例えば、LockWorkStation のように、特定のウインドウをロックして しまい、パスワードを要求するのか・・とか、 違うにしても、UnlockWindowStation があるのだから、どう言う関数なのか・・ 利用できるなら、使って・・と思ったものですから。

  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.1

本当に探しましたか? 確かに日本語では存在しないようですが、型を知りたいだけなら 別に C++ 以外の言語での説明でもいいはずです。 BOOL WINAPI LockWindowStation( HWINSTA winSta ); BOOL WINAPI UnlockWindowStation( HWINSTA winSta ); // WinXPsp2/VC++6sp6 にて "ok" が出ることを確認 #include "stdafx.h" #include <windows.h> #include <tchar.h> typedef BOOL ( WINAPI* LPFNLockWindowStation )( HWINSTA winSta ); typedef BOOL ( WINAPI* LPFNUnlockWindowStation )( HWINSTA winSta ); int main() {   HMODULE hLib = ::LoadLibrary( _T( "user32.dll" ) );   if ( hLib ) {     LPFNLockWindowStation lpfnLockWindowStation = ( LPFNLockWindowStation )::GetProcAddress( hLib, "LockWindowStation" );     LPFNUnlockWindowStation lpfnUnlockWindowStation = ( LPFNUnlockWindowStation )::GetProcAddress( hLib, "UnlockWindowStation" );     if ( lpfnLockWindowStation != NULL && lpfnUnlockWindowStation != NULL ) {       ::MessageBox( 0, _T( "ok" ), 0, 0 );     }     else {       ::MessageBox( 0, _T( "ng" ), 0, 0 );     }     ::FreeLibrary( hLib );   }   else {     ::MessageBox( 0, _T( "DLL not found" ), 0, 0 );   } return 0; }

参考URL:
http://www.google.com/search?num=50&hl=ja&q=LockWindowStation&btnG=%E6%A4%9C%E7%B4%A2&lr=
Williamtel
質問者

補足

返答(回答)、感謝します。 はい 探しました。 そして、指摘のあるように、例も見つけました。 言語が何であろうと・・と言われても、WindowStation 自体の 定義であったり、引数の「HWINSTA winSta」がわかりませんでした。 指摘されているURL(google)にしても、既に検索してみましたが、 私の勉強不足、英語の理解力の不足もあるでしょうが、 USER32.DLL内での関数の羅列であったり、ライブラリ番号であったりして、 機能や引数の説明が見当たらなかったことで、質問しました。 ここに書かれたコードにしても、呼び出しや利用法ですよね? それは、既に理解していることです。 ちなみに、Platform SDK に HWINSTA についてであったり、 WindowStation 関係の関数がありますが、LockWindowStation や UnlockWindowStation の記述は無く、書かれていることが、理解 できなかったこともあっての質問でした。 まあ、SDKすら理解できないのなら、使うな・・と言われそうですが・・ しかし、質問の関数については、書かれていません。

関連するQ&A

  • 戻り値 引数 と API プログラミング初心者

    先日 戻り値 引数の関係を学びました。 呼び出しもとが関数を呼び出すときに上げる情報を引数、関数の処理から受け取る情報を戻り値であると学びました。 これを学んだ際に、APIも情報を受けわたす窓口であるという点と異なるもの同士(プロシージャとソフトウェア)で連携するという点で似ているなと感じました。 この考え方や認識に誤りはないでしょうか?よろしくお願いします

  • Cygwin の API について

    Cygwin の APIが載っているホームページや参考書を探しています。 各APIの機能や引数、戻り値の説明が書かれているものです。 ご存知でしたら、URLや参考書名を教えてください。 よろしく御願いします。

  • VBAでコントロールのハンドルを取得したい

    Excel2000のVBAでFormに配置したコントロールのハンドルを取得するにはどうしたらよいのでしょうか? 目的は、Winsock API(ws2_32.dll)の WSAAsyncSelect関数の2番目の引数にセットする値を取得することです。USER32.dll の GetDlgItem が使用できそうなことがわかったのですが、こちらもその2番目の引数にセットするIDがわかりません。

  • 読み込むdllが名前違いでたくさんある場合について

    同じ引数、戻り値のdllが名前違いで100個あります。 これらをテストするツールを作成しています。 [DllImport("user32.dll")] のdllの部分を可変にすることは可能なのでしょうか?

  • API関数とDLL関数

    API関数とDLL関数って同じものですか? ネットで調べると・・・ API関数=Win API→ひとつひとつの関数(単独で機能するプログラムコード の塊)。     API関数はdllファイルの中にある関数をさす。 とのようなことが書いてあります。つまり、DLL関数(私の認識であると、.dllファイルの中にある関数)であり、この関数はAPI関数と同定義と認識しています。 まだまだ初心者で、この認識があっているか確信がもてません。 どうか教えていただけないでしょうか?? お願いいたします。

  • JSの高階関数とは?

    高階関数とは? 「関数を引数、戻り値として扱う関数」のことを高階関数と呼びます。 と聞いたのですが、関数が他の関数の引数として、ないしは戻り値とし使われている場合その引数、戻り値の関数のことを高階関数というのでしょうか? するとコールバック関数は引数として関数を使う場合のようですが、半分被りますよね?

  • API関数(DLL)の呼び出しにおいて、DLLの格納場所は?

    お世話になります。 VB.NETでAPI関数を呼び出す場合にまず、API関数を格納しているDLLを宣言しなけれならないと下記URLにあります。 (http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html) (a)DllImport属性を利用する方法 <System.Runtime.InteropServices.DllImport("DLL名")> _ Function API関数名(仮引数) End Function (b)Declareステートメントを利用する方法 Declare Function API関数名 Lib "DLL名" (仮引数) そこで、質問なのですが、(a)、(b)どちらの方法で実現する場合においても、DLLの格納場所はC:\Windows\System32でないといけないのでしょうか?(実際にコーディングしてもSystem32フォルダにないとエラーになってしまいます。) 任意のフォルダにDLLを格納し、そこを参照できるようにできるのでしょうか? また、一般常識としてDLLはSystem32フォルダに格納しておかないといけないものなのでしょうか? 以上、よろしくお願いいたします。

  • 文字列の数字部分を取り出す関数・メソッド

    こんにちは。 ある文字列から、数値部分を取り出す関数やメソッドは存在するのでしょうか? たとえば、  引数:"abc123"→戻り値:123  引数:"a1b2c3"→戻り値:1 ※はじめに見つかった数値 という感じです。 無いのであれば、自作しようと考えているのですが…。

  • 独自アプリのAPI公開方法について

    Visutal C++ 2008(MFC)を用いてソフトウェアを開発しています。 現在開発しているソフトウェアは、ネットワーク通信系のものであり、 EXE側で通信機能を実装し、DLLをプラグインという形でロードしています。 そこで、DLL側でもEXE側に実装した通信系の関数(SendやRecvなど)を 呼び出したい(EXEからAPIを公開?)と考えているのですが、 どう実装したらいいのか分かりません。 今のところは、API公開用のDLLを用意し、EXEとDLLから両方ともにロード をさせようかと思っていますが、他に良い方法は無いでしょうか? 宜しくお願いします。

  • UserGetAttributesの第7引数が文字化けするのですが

    Win32::NetAdminモジュールの中の UserGetAttributes関数に関する質問です。 WindowsNT 4.0, ActivePerl 623, Win32::NetAdmin (version = 0.07) を使っています NTサーバ上のユーザの属性を取りだすスクリプトの中で UserGetAttributes 関数を使ったところ,この関数の第7引数に格納される "説明"という項目に全角文字がふくまれている場合には,文字化けして(2バイトの文字が3バイトになって)とりだされてしまいます。半角文字はそのままとりだすようです。 私の環境が悪いのか,それともこういった仕様なのかが判断できずにいます。 同じ経験をされた方はいらっしゃらないでしょうか。 仮に仕様によるものだとすると,文字化けした戻り値をsjis等に変換するモジュールも存在しそうなものですが,実際どこかにあるのでしょうか。

    • ベストアンサー
    • Perl

専門家に質問してみよう