Win32API 質問箱 Build5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGやさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。
前スレ
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNGそういう方法も面白そうです、できればWindows APIで…
0490デフォルトの名無しさん
NGNGWM_USERCHANGED なんてあれば楽なんですが。
0491デフォルトの名無しさん
NGNG質問するときは、あげてもいいんじゃない?
というわけで、代わりにage
0492デフォルトの名無しさん
NGNGDirectShow
0493デフォルトの名無しさん
NGNGたまぁに右側に一個だけ離れているソフトがありますけど、
あれはどうやっているのでしょうか?
0494デフォルトの名無しさん
NGNG0495493
NGNG自己解決しました。
ヘルプってか〜。
0496デフォルトの名無しさん
NGNG>>12
0497487
NGNGDirectShowですか。情報不足なので調べてみます。
>>496
GifもJpegもやっかいなことになってしまいましたねぇ。
今回は個人用ということで、見逃してください…。
0498デフォルトの名無しさん
NGNGエラーダイアログが表示されます。
LoadLibraryが失敗したときにはNULLが返ってくるだけで良いので、
このダイアログを表示させないようにするにはどうすればよいのでしょうか?
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNGarigatou
0501デフォルトの名無しさん
NGNGCAPTUREBLT
0502デフォルトの名無しさん
NGNGプロキシの設定だけはIEを参照して実際の接続はWinsockで
やるような場合、今までは自動構成スクリプトに対応するのが
面倒だったけどWinInetの新たに公開された関数で楽になった。
あとSwitchToThisWindow使うとフォアグラウンドロックを回避
できるのかな? (未確認)
0503デフォルトの名無しさん
NGNGどの関数?
0504デフォルトの名無しさん
NGNG(に限らず他にもあるかもしれないけど未確認)は、
API自体は既出なわけだけど、それはAPIに隠し機能があったとか
ドキュメントに隠し事項があったとかそういうことけ?
0505デフォルトの名無しさん
NGNG該当ページをWinInetで検索すればすぐ見つかるだろ…
まあいいや
DetectAutoProxyUrl
InternetGetProxyInfo
公開前からDependency WalkerでWININET.DLLを覗いて
「MSずるいよなー」とか思ってたから漏れ的には一番うれしい
0506デフォルトの名無しさん
NGNGFreeResourceとかFillMemoryに至っては何が新しいのか
さっぱり分からないです。
あとMultimediaのところにSndPlaySound(大文字)ってあるけど
これはsndPlaySound(小文字)とは違うの? なんかクリックすると
sndPlaySound(小文字)の説明が出てくるんだけど。
0507デフォルトの名無しさん
NGNGSDKは有償でなかった?
0508デフォルトの名無しさん
NGNG過去ログ見てないんか>>476
0509デフォルトの名無しさん
NGNGはじめて公開した関数はほとんどパラメータの説明しかないし
FreeResourceは現在return 0;だけの実装なのにいかにも
いろいろやってそうな説明してるし(たぶん昔のSDKの解説切り
貼りしたんだろう)NtCreateFileに至ってはZwCreateFileの
置換し忘れがあるし(w
0510デフォルトの名無しさん
NGNGきっとこんな感じでリスト作ったはず。
0511デフォルトの名無しさん
NGNG将来無くなるかもしれんと断りのあるもの、明らかに単なる計算ルーチンなもの
も結構あってなんだかつまらんです
0512デフォルトの名無しさん
NGNG今回は仕方なく公開しただけで
問題はサードパーティーには「将来なくなるから使うな」とか何とか
言っておきながら「Microsoftのミドルウェア」は
しっかり使ってるというダブルスタンダード
0513デフォルトの名無しさん
NGNGIsUserAdminとかInternetGetProxyInfoは手間がかなり違う。
自分でダイアログ用意すれば作れるからって
コモンダイアログがいらないってことにはならないでしょ
0514デフォルトの名無しさん
NGNGそういう「これ以外に手段がありません」というやつだけ抜き出してほしかったり
0515デフォルトの名無しさん
NGNGSingle-Threaded Apartments
いきなり挫折しますた(w
0516デフォルトの名無しさん
NGNGというものを挙げてみます。
__WSAFDIsSet - 直接使わずFD_ISSETマクロで使う。
RtlConvertSidToUnicodeString - ConvertStringSidToSidを使う。
IsNetDrive - GetDriveTypeとWNetGetConnectionで代替できる。
OpenRegStream - SHOpenRegStream*を使う。
PathGetShortPath - GetShortPathNameでよい。
SHCLSIDFromString - CLDIDFromStringを使う。
SHCoCreateInstance - CoCreateInstanceを使う。
SHCreateDirectory - SHCreateDirectoryExで代替できる。
FreeResource - Win32では何もしないので不要。
RtlCharToInteger - strtolやwcstolでよい。
RtlUnicodeToMultiByteSize - WideCharToMultiByteでよい。
ExtDeviceMode - 16ビット時代の遺物。DocumentPropertiesを使う。
RtlCompareMemory - memcmpでよい。
RtlExtendedIntegerMultiply - __int64による乗算でよい。
RtlExtendedLargeIntegerDivide - __int64による除算でよい。
RtlUniform - CryptGenRandomで代替できる。
RtlUnwind - 直接使わず構造化例外処理を使う。
RtlIsNameLegalDOS8Dot3 - XP以降ならCheckNameLegalDOS8Dot3を使う。
IsBadHugeReadPtr - 過去の遺物。IsBadReadPtrを使う。
IsBadHugeWriteOtr - 過去の遺物。IsBadWritePtrを使う。
NtQuerySystemTime - GetSystemTimeAsFileTimeを使う。
RtlLocalTimeToSystemTime - LocalFileTimeToFileTimeを使う。
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG改行される部分のポインタを取得したいのですが
よい方法はないでしょうか?
DrawText関数は描画した高さを返すので困っています。
0519518
NGNG0520デフォルトの名無しさん
NGNGBSD socketでどうなのかは知らないけどWinsockではマクロだよ
winsock.h見てみ
0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGよくわからんがGetCurrentPositionExでも試してみたら
0524デフォルトの名無しさん
NGNG最後の3文字良いね。
0525デフォルトの名無しさん
NGNG○WNDCLASSEX
じゃなかったっけ?
0526デフォルトの名無しさん
NGNGEWX_FORCEIFHUNG
のフラグつけたらどうなるんでしょうか?
想像では
EWX_FORCEフラグに置き換えられるのではないかと思います。
確認できる手段がなくて困っているのですが、
ご存知の方、教えてもらえませんか?
0527デフォルトの名無しさん
NGNG最後の3文字良いね。
0528526
NGNGなんでこのタイミングで書き込んでしまったのか
自問自答。。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1023359282/605-
RASPPPoEをインストールして調べてみたところ、
szDeviceTypeはRASDT_Isdnになるようです。
ここでいうISDNとはISDNボードを使った1.5Mの接続とかの
ことで、64KのふつうのISDNはRASDT_Modemになるので
RASDT_Isdnもブロードバンド扱いすればいいかと。
0531デフォルトの名無しさん
NGNGCOMポートになりすまさない内蔵ISDNとか使うとRASDT_Isdnになるよ
0532デフォルトの名無しさん
NGNGこれはどう解釈したらいいのでしょうか?
int test()
{
return ::GetLastError() != ERROR_SUCCESS;
}
::GetLastError() != ERROR_SUCCESS;が
真なら1を返し、そうでなければ0を返すというだけのものでしょうか?
test()がintの戻り値を返すようにサンプルではなっているので
気になっています。
intなのに1 or 0しか返さないのでしょうか?
それともなんらかの場合、GetLastError()の値を返したりしますか?
0533デフォルトの名無しさん
NGNGMSDNの「return」見てみな。
ちなみに「真なら1」とは限らない。
0534デフォルトの名無しさん
NGNG条件演算子は真なら1、偽なら0を返す。
これは言語で規定されている。
スレ違いだけどな。
0535デフォルトの名無しさん
NGNGそれをいったら BOOL 自体 int だしな
windef.h 見てみ
0536532
NGNG見てみましたが、特にこの問題と関係ないように思えたのですが。。
>535
それはわかってますが、
0 or 1しか返さない仕様の関数に
int型の戻り値を要求するのがおかしいな、と思いまして。
0 or 1ならBOOL型で十分じゃないかと。
>534
つまり
GetLastError() != ERROR_SUCCESS
の条件式が先に 0 or 1に評価され、
それがreturn 0 or 1に
なるという流れでよろしいでしょうか?
つまり、
GetLastError() != ERROR_SUCCESS
は条件式なので、0or1の値しかなりえないと。
あってます?
0537デフォルトの名無しさん
NGNGbool型ならじゃなくて、条件演算子ならってかいてあるじゃん
まぁ、規定されてるのはC++だけだが。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGCならint型の1/0になる。
BOOLは単にintをtypedefしたもの。
で、API関係の解説はCでも使えるように大抵Cで書いてあるんじゃないのかな。
0540デフォルトの名無しさん
NGNGあるウインドウハンドルの
親ウインドウのハンドルを取得するAPIってありますでしょうか?
良かったら教えてください。
0541デフォルトの名無しさん
NGNGあるウインドウの親ウインドウのハンドルを
そのウインドウのハンドルから取得できるようなAPIは無いでしょうか
ですね。
よろしくお願いします。
0542デフォルトの名無しさん
NGNGGetParent
0543デフォルトの名無しさん
NGNGありがとうございました。
0544デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGにある APIについてなんですが、
>対応情報
> Windows NT/2000:Windows NT 3.1 以降
> Windows 95/98:Windows 95 以降。Windows 95 用の再配布可能なファイルとして利用可能。
> Windows CE:対応していません
「再配布可能なファイルとして利用可能」とは、どういうことですか??
この APIをコールする実行ファイルを、一般に配布して良いということですか?
0547デフォルトの名無しさん
NGNG具体的にどのAPIなんだYO
0548デフォルトの名無しさん
NGNGIE5に含まれるとか、そんな意味だろ。この場合、IE5は再配布可能だから、Win95
でも利用可能ということになる。
よく、対応情報の回りを読んでみそ。
0549546
NGNGMakeSureDirectoryPathExistsとか。
...って、MSDN英語版では、どう記載されてるのかと思って見てみたら
>Requirements
> Windows NT/2000/XP: Included in Windows 2000 and later.
> Redistributable: Requires DbgHelp.dll 5.0 or later on Windows NT 4.0 and Windows 95/98/Me.
こういうことか。すなわち、DbgHelp.dllが必要で、この DLLを再配布して良いと。
0550デフォルトの名無しさん
NGNGSHCreateShellFolderView(Ex)
相当の処理は自前でIShellView書く以外に無いのでしょうか?
0551デフォルトの名無しさん
NGNGあれは「2000/XP上で」Microsoftのミドルウェアが使っているAPIを
公開した、という名目なのでそれ以前でもひそかに使える可能性はある。
でもIE5が必要とか。
0552デフォルトの名無しさん
NGNG連続したクラスタに割り当てられる可能性が高くなったりしますか?
0553YahooBB237224170.bbtec.net
NGNGもぐりこんで**を調べる」というようなのを読んだ記憶があるんだが,
どうやればそんなことが出来るんでしょうか.
0554デフォルトの名無しさん
NGNGんなことより、あんたの
名前欄はなんなんだ??
0555デフォルトの名無しさん
NGNGフックをかけると潜り込める
0556YahooBB237224170.bbtec.net
NGNGこっちが聞きたいよ.fusianasan としたらこれが出た.(今回も)
もちろんプロバイダはYBBですが,板の仕様?
それより実行中の別プログラムの何をフックするんですか?APIがある?
0557デフォルトの名無しさん
NGNG皆を代表して聞くが
なんで
「fusianasan」と入れる?
0558デフォルトの名無しさん
NGNGウインドウをフックする
0559fusianasa
NGNGなんか特別な意味がある?
どっかでみて適当に書いただけだが.
こんかいは fusianasa と書いてみました.
window handle を入手するんですね.どうも.
たぶんまた聞きますのでよろしく.
0560デフォルトの名無しさん
NGNGデータの一部をリストビューで表示させてるときって
データをどうやってもつんですか?
自分のデータを保持してると
リストビューにも同じ内容のデータが出来て
メモリがもったいない気がする
0561デフォルトの名無しさん
NGNGこっちのスレの最初のほうでちょっと議論があった
Windows Programing for C/C++(Not MFC)
http://pc3.2ch.net/test/read.cgi/tech/1018239290/l50
漏れは重複して持たない主義。ただMVCの分離が…
0562デフォルトの名無しさん
NGNG仮想リストビュー(オーナーデータ)でがんがれ。
0563
NGNGthx
ちょっと読んできます
0564デフォルトの名無しさん
NGNGAddAccessAllowedAceEx関数を使用し継承を設定したのですが、設定したフォルダの中に新しいフォルダを作成すると「継承元なし」のフォルダが出来てしまいます。
継承元を親フォルダに設定するにはどうしたらよいでしょうか?
OSはWindowsXPで、VC++のバージョンは6.0です。
0565デフォルトの名無しさん
NGNGこちらの方が適当だと思いますので、質問し直させてください。
VB6.0、Windows2000で、OpenPrinter関数でプリンタのハンドルが取れません。
ローカルプリンタだと大丈夫なのですが、\\SERVER\PRINTERといった
ネットワークプリンタだと失敗してしまいます。
ネットワークプリンタの場合、方法を変える必要があるのでしょうか?
0566デフォルトの名無しさん
NGNGウィンドウプロシージャをフレンド関数としてそのクラスにもたせています。
(メンバ関数のアドレスを取るのは望ましくないですよね?)
インスタンスはたくさんあるけれどもWndProcはひとつなので、
WndProcから見るとどのインスタンスに属するメッセージなのかが区別できません。
これを解決するために、CreateWindowでインスタンスポインタ(this)をWM_CREATEに
渡してSTLのmapにhWndとthisポインタを格納し、メッセージに応答するときは
hWndからthisをサーチしてインスタンスを決定する、という方法をとっています。
なんだか泥臭いので、もっといい方法はないでしょうか。
こういったことはよくありそうだと思うんですけど。
0567デフォルトの名無しさん
NGNG他に定番の方法としては、
・SetWindowLong でhWndにthisポインタを関連付けて置いて、
WndProcでGetWindowLongで取り出し。
・サンクを使う。つまり、thisポインタを埋め込んだマシンコードを
実行中にメモリに作ってしまって、それをWndProc替わりにする。ATLとか参照。
0568デフォルトの名無しさん
NGNGVirtualAllocの割り当て単位がページ毎だし、
サンク作る毎にメモリ確保してたら4kずつ取られてくよね
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNGPAGE_EXECUTE属性をつけにゃならんだろうが
0571デフォルトの名無しさん
NGNG#include <stdio.h>
int main ()
{
unsigned char *p;
unsigned char x[] = {
0xB8,0x7B,0,0,0, // mov eax,123
0xC3 // ret
};
p = malloc( sizeof( x ) );
memcpy( p, x, sizeof(x) );
printf("%d\n",(*((int (*)(void))&x))());
printf("%d\n",(*((int (*)(void))&p))());
}
BCC32 on WinXPで実行したけど、violation出えへんかったで。
0572566
NGNGサンクですが、要するにメモリにマシン語書いておいてそこに突入させる
わけですよね? そいつをWndProc代わりにするってのがよくわかりませんが・・・。
何にしても最後にはWndProc呼んでやらないといけないですよね?
アセンブラはPC-98時代にぶいぶい言わしたくらいで最近はとんといじってません。
0573デフォルトの名無しさん
NGNG> そいつをWndProc代わりにするってのがよくわかりませんが・・・。
引数の hWnd を、アセンブラコードの部分でこっそり this とすり替えるんだよ。
0574デフォルトの名無しさん
NGNG通るかも知れないけど、EXECUTE属性のないメモリ上でコードを実行させるのは行儀悪いだろ
0575デフォルトの名無しさん
NGNG文句があるなら、Microsoftにいってくれ。
0576デフォルトの名無しさん
NGNGデフォルトで実行属性がつくから、問題ない。
そんなの処理系・環境依存だろって意見はあるかも知れんが、そもそも
VirtualAlloc とか言ってる時点で Win32 環境限定の話だしさ。
0577デフォルトの名無しさん
NGNGおおよそのところ
memcpy( buf,
//---------------------------------
mov dword ptr [esp+4] this
jmp WndProc - (buf + α)
を意味するコード
//---------------------------------
, size
);
SetWindowLong( GWL_WNDPROC, buf );
こんな感じにすると、第一引数としてhWndが入ってたはずの部分に
thisポインタの値が入った状態でWndProc関数に飛ぶので、
あとはテケトーに。
0578デフォルトの名無しさん
NGNGこんなことどこに書いてある?
0579566
NGNG行儀悪いのは大好きなのですが、hWndとthisをすり替えるってのが
ちょっとキモチワルイです。
ひとつ思ったんですが、これって誰かにサブクラス化されたらえらいことになりますね・・・。
0580デフォルトの名無しさん
NGNGecxにthisを入れてjmpすれば、
少なくともvcでは正常にthisが使えるよ。
0581デフォルトの名無しさん
NGNG公式にドキュメント化されてるかは分からないなぁ。
ただ、俺は少なくともプロセスヒープは「read/write/execute可能」という前提で
プログラミングして(いちいち GetProcessHeap && VirtualProtect なんて
やってない)。MS が出してるコードも、そうなってるしさ。
0582デフォルトの名無しさん
NGNG> ひとつ思ったんですが、これって誰かにサブクラス化されたらえらいことになりますね・・・。
なんで?
0583デフォルトの名無しさん
NGNG特殊キーの状態はGetKeyStateで取得できるのですが、
それ以外のキーの状態を取得するAPIはありませんか?
0584583
NGNG0585デフォルトの名無しさん
NGNGGetKeyboardState
0586デフォルトの名無しさん
NGNGできますた! ありがとうございます。
0587デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています