2017-01-05 2 views
-1

私は次の三つの例でした:これはなぜ同じハンドル(CPPハンドル)の同じアドレスですか?

void main() 
{ 
    HANDLE A = ShellExecute(NULL, "open", R"(C:\Users\Gustabo\Desktop\noticed_files.txt)", "", "", SW_SHOW); 
    HANDLE B = ShellExecute(NULL, "open", R"(C:\Users\Gustabo\Desktop\clientserver.txt)", "", "", SW_SHOW); 
    HANDLE C = ShellExecute(NULL, "open", R"(C:\Users\Gustabo\Desktop\noticed_files.txt)", "", "", SW_SHOW); 
    std::cout << A << std::endl; 
    std::cout << B << std::endl; 
    std::cout << C << std::endl; 
    system("pause"); 
    ExitProcess(0); 
} 

これは、3つの異なるハンドル(simmingly)です。 各HANDLEは、別のプロセスに通知します(しかし、それはありません)。

出力は:

0000002A

0000002A

0000002A

この3つのハンドルがそれぞれ1に別のアドレスを持っていけないのはなぜ?

+1

'HANDLE'は標準のC++データ型ではなく、' ShellExecute() 'は標準のC++関数ではありません。 – Barmar

+0

ハンドル全体が表示されていない可能性があります。暗黙的に不適切な型に変換されている可能性があります。 – Barmar

+0

「0000002A」は、ユーザメモリ内の構造の可能性のあるアドレスのようには見えません。 – Barmar

答えて

0

戻り値ShellExecuteはハンドルではありません。これは、関数呼び出しの成功/失敗を示すものに過ぎません.32より大きい場合、関数呼び出しは成功しました。

+0

私の悪いです。私の理解をクリアしてくれてありがとう。 –

関連する問題