Win32API【2】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGやさしいお兄さんたちが答えてくれるかも。
ただし、質問する前にまずMSDN読め。
MSDN Online
http://www.asia.microsoft.com/japan/developer/
前スレ
http://pc.2ch.net/test/read.cgi/tech/991576947/
0175デフォルトの名無しさん
NGNG意味不明。書き込んだあとに消せばいいではないか。
0176172
NGNG0177デフォルトの名無しさん
NGNG夕日を思う
スダチかな
0178デフォルトの名無しさん
NGNGhttp: とか .url とかその辺もいろいろ変えれ。
0179デフォルトの名無しさん
NGNGまた書き直せば良いよ。
必要なときに WM_PAINT が送られてくるから、そんときに。
・・・って、フォームってなんぞ。
0180デフォルトの名無しさん
NGNGいつのまにか説明ごと葬り去られてなかったことになってるんだけど
どうなってるの?
0181デフォルトの名無しさん
NGNGSPI_GETSCREENSAVERRUNNING
ただしWin98/2000以降
0182ナナシ
NGNGなぜかウインドウの形に亀裂が入ってしまうんだけど、これって
XPのバグなんですか?2000じゃならないし。
0183デフォルトの名無しさん
NGNGなんか凄いアホな質問だとおもうんですが、だれかズバッと教えてください。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGListView_GetColumnあるじゃん?
0186デフォルトの名無しさん
NGNGint nCount = Header_GetItemCount(ListView_GetHeader(hwndLV));
つう感じでどうか。
0187183
NGNGおお、でけました。恥ずかしながら、そういう風にやるなんてまったくしらなかったっす。
185さんのを見て、何番目までGetColumn出来るか、で数えてみる方法でもちゃんと分かりましたが、
そっちの方がスマートでありがたいです。とにかく助かりました。
0188180
NGNG昔はLoadResourceの説明にこんなことが書かれてたんだけど
> Windows 95: The system does not automatically free resources
> loaded using the LoadResource function. Applications must use
> the FreeResource function function to explicitly discard a resource
> that is no longer needed.
0189ヒッキー@プログラミング
NGNGFreeResource
16 ビット Windows ベースのアプリケーションの移植を容易にするために提供されているもので、
今後廃止されます。Win32 アプリケーションでは、LoadResource 関数でロードしたリソースを
解放する必要がありません。LoadResource 関数で取得したリソースは、それをロードした
モジュールがアンロードされると自動的に解放されます。
0190デフォルトの名無しさん
NGNG理由は、ペアになっていないと気持ち悪いから(w
0192デフォルトの名無しさん
NGNGMSDN Library の文章は信用できないが、2ちゃんねらーの言明は信用できるのか?
0193デフォルトの名無しさん
NGNGh=loadlibrary('test.dll')
rsr=findresource(h,test,...)
LoadResource(h,rsr);
freelibrary( hl );
}
みたいに回して試せば〜?
0194180
NGNG188もVC++ 4.0のBooks Onlineからの引用なんですけど。
いつのまにか記述がコロコロ変わるようなものとどっちが
信用できるんでしょうねえ。マジで。
ちなみに
http://msdn.microsoft.com/library/en-us/win32/chilimit_70vn.asp
に相当するドキュメントにも、昔は
> In Windows 95, a call to the FreeResource function must be
> included for every call to the LoadResource function. The call
> to FreeResource allows the system to discard a resource that
> an application no longer needs. Windows NT automatically frees
> resources, so a call to FreeResource is not required.
とか書かれてたんですけどこれも葬られてますね。
0195デフォルトの名無しさん
NGNGVC4 のドキュメントは、古すぎだって。とりあえず最新の MSDN Library 参照して、それを信用しておく
のが賢明と思われ。
本当に困りそうなら、
1. 実験して試す (Win95 も OSR のバージョンによって挙動が違ったりしそうだが)
2. インシデント消費して MS に問い合わせる
しかないんじゃないかなぁ。
0196180
NGNGそれを言うなら95だって古すぎだと思うんですけど。
ドキュメントが新しくなったからって95についての記述が変わるなんて
95には自己進化能力でもあるんでしょうか、とか思ったり。
消されたもっともらしい理由があれば納得するんですけど
Microsoftに聞くしかないか。
0197デフォルトの名無しさん
NGNGFreeResource:
bff915fc 33c0 xor eax,eax
bff915fe c20400 ret 0004
結論: 当時のドキュメントのバグ
0198デフォルトの名無しさん
NGNG特別にドライバ入れたりしてるわけではないので、
APIだけで実現してるのだとは思うのですが・・・。
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/windows/lifecycleconsumer.asp
そろそろ非サポート対象フェーズに移行するらしいので、古いOSに関する
記述をサクッと削除しようという方針ではないかと推測。
なぜ当時のドキュメントに"In Windows 95,〜"と書いてあったかはわからない
けど。
0201デフォルトの名無しさん
NGNGLoadLibraryで作成されたファイルマップに対するビューだから、
FreeLibrary時に自動的に無効になるはず。
だからFreeResourceが要らないというのは正しいが、
たぶんFreeResourceするとアンマップされるので
した方がメモリ消費が減るかと思われる。
巨大リソースを埋め込んだexeで試してみるといいよ。
ロード時にはexeのファイルサイズ分はメモリ使ってないけど、
LoadResourceの時点でメモリが喰われる。
FreeResourceでメモリが解放されるかどうかはOSのバージョンに依る。
0202デフォルトの名無しさん
NGNGとりあえず、>>197のは見えるか?
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG他の部分は95の記述もいっぱい残ってるしVC++6付属のMSDNで
すでに削除されてたので深読みしすぎだと思われ
0205悩んでます
NGNGとある事情からWin32APIの「SystemParametersInfo」という
関数を使う必要が出てきました。具体的にはその関数の1番目の
引数を「SPI_GETSHOWIMEUI」に設定するのですが、いざビルドした所
エラーになりました。(エラーはSPI_GETSHOWIMEUIは定義されていない)
しかしMSDN Online Japanのサイトでもしっかりと記述してあるし
定義されていないわけがないのですが、なぜかそう出ます。
includeしているのはWindows.hのみです。
Visual C++6.0とDirectX7.0を使用してます。
他に何かファイルをincludeする必要でもあるのでしょうか?
一応他の関連スレでも聞く予定ですが、もし分かる方がいらっしゃれば
どなたかご教授よろしくお願いします。
0206デフォルトの名無しさん
NGNG>しかしMSDN Online Japanのサイトでもしっかりと記述してあるし
制限付きなモノは、デフォルトでは使えませんよ…バージョン指定しないと。
>他に何かファイルをincludeする必要でもあるのでしょうか?
MSDN見たなら最後の方に、どのヘッダで定義されてるか書いてるでしょ。
0207悩んでます
NGNGレスどうもです。
バージョン指定・・・とはどこをどう変える必要があるのでしょうか?
他スレで指摘されたのですがWINVERの値のことですか?
0208悩んでます
NGNG解決しました。なるほど、おっしゃる意味が解決したことで
分かりました。どうもです。
0210デフォルトの名無しさん
NGNGまたそのスクリーンの左上・右下の座標を得るにはどう調べたら
宜しいのでしょうか…
0211デフォルトの名無しさん
NGNGマルチスクリーンってマルチモニタのこと?
だったらMonitorFromPointでハンドルを取得しておいてGetMonitorInfoとか。
0213デフォルトの名無しさん
NGNG教えてください
0214デフォルトの名無しさん
NGNGなにか?
0215デフォルトの名無しさん
NGNGここにhWnd1とhWnd2は別アプリ。
こーいうのってやらないほうがいいのかな?
hWnd2をDestroyしてもちゃんとフォント残ってるよ
フォントってどうなってるの?
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGマクロー
WINDOWSX.Hにあるー
0219デフォルトの名無しさん
NGNGSetWindowFont(hWnd1,GetWindowFont(hWnd2),TRUE);
オブジェクト的にどーなってるの?
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGプリンタ、コントロールパネル、ダイアルアップネットワーク、お気に入り、
など各仮想フォルダごとにカラムの内容が違いますよね。
自作の仮想フォルダが要求された時にエクスプローラーのカラムの内容を変更
し、ファイルに相当するものの一覧を表示したいのですが。
0222デフォルトの名無しさん
NGNGIShellFolder を実装しなきゃならんと思います。
んで、クラスファクトリ作ったり、ちゃんとしたCOMのインプロセスサーバーに仕立てて、クラスIDをレジストリに登録します。
んで、ファイルシステム内に置くなら desktop.ini をスーパー隠しファイルにしてクラスIDを書けば良かったかな?
マイコンピュータ内に置きたいなら HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace
デスクトップ上なら HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace が怪しそうです。
いずれも実際に自分がやったことはないので、信頼度の低い情報です。参考程度にして頂ければ。
0223デフォルトの名無しさん
NGNGSetThreadPriority() に渡すスレッドハンドルは、どうやって求めるのでしょう?
0224デフォルトの名無しさん
NGNG他のプロセスのスレッドの優先度を変更したい
ということですか?
0225223
NGNG無理ですか?
0226デフォルトの名無しさん
NGNGOpenThread() かな。
0227デフォルトの名無しさん
NGNG他のユーザーが開いていないかをラベルにはどうしたらいいですか?
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGWin95/98/NT 4.0では無理?
0230223
NGNG少なくとも taskman.exe では呼ばれてないですね
0231デフォルトの名無しさん
NGNGどこで聞いた話か知りませんがデマを振りまかないでください。
廃止などされていません。
Win9xのtaskman.exeにはそもそも優先度変更の機能なんて
ありませんから呼んでるわけがありませんね。あなた本当に223?
0232デフォルトの名無しさん
NGNGNT のタスクマネージャには機能がある以上、方法はあると思う。とりあえず Dependency Walker でタスク
マネージャが使っている API をリストアップしてみたら? (ただ NTDLL.DLL にある非公開 API を使われ
てるとお手上げだけど)。
0233デフォルトの名無しさん
NGNG優先度クラス変更のAPI(SetPriorityClass)に渡すのは
スレッドハンドルではなくてプロセスハンドルだから、
そもそもスレッドハンドルを求める必要はない。
0234デフォルトの名無しさん
NGNGWindows NT/2000ネイティブAPIリファレンスみたいな本も出てるから
お手上げってほどでもない。
NT 4.0でOpenThreadをシミュレートするとこんな感じ。
HANDLE OpenThread(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwThreadId)
{
OBJECT_ATTRIBUTES ObjectAttributes;
CLIENT_ID ClientId;
NTSTATUS status;
HANDLE ThreadHandle;
InitializeObjectAttributes(&ObjectAttributes, NULL, bInheritHandle ? OBJ_INHERIT : 0, NULL, NULL);
ClientId.UniqueProcess = 0;
ClientId.UniqueThread = dwThreadId;
status = NtOpenThread(&ThreadHandle, dwDesiredAccess, &ObjectAttributes, &ClientId);
if (!NT_SUCCESS(status)) {
SetLastError(RtlNtStatusToDosError(status));
return NULL;
}
return ThreadHandle;
}
0235デフォルトの名無しさん
NGNGtypedef HANDLE (WINAPI *OPENTHREADPROC)(DWORD, BOOL, DWORD);
pOpenThread = (OPENTHREADPROC)((LPBYTE)GetProcAddress(GetModuleHandle("KERNEL32"), "OpenProcess") + 0x24);
__asm mov eax,dwThreadId
__asm xor eax,Obsfucator
return pOpenThread(dwDesiredAccess, bInheritHandle, dwThreadId);
0236デフォルトの名無しさん
NGNGhttp://support.microsoft.com/default.aspx?scid=kb;EN-US;q121093
0237デフォルトの名無しさん
NGNG(゚д゚)午-
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGセーブしたいんですが、どうやればいいのでしょうか?
BITMAP作ってDCにSelectObjectしたりしたんですが駄目でした。
あと本当はBMPじゃなくてピクセル情報が取りたいのですが。
0241デフォルトの名無しさん
NGNGピクセル拾うなら GetPixel()
ビットマップにコピーしたければ BitBlt()
0242240
NGNG(上のウィンドウもピクセルとして拾ってしまう)
BitBltを使ってどうやってピクセル情報を得るんでしょうか?
ヘルプを見るとDCからDCへのコピーみたいな感じなんですが。
0243デフォルトの名無しさん
NGNGSetForegroundWindow で明示的に前に出せば?
直後に sleep を入れて少し待てば確実にいけると思うが。
0244240
NGNGhdc = GetDC(hwnd);
hdc2 = CreateCompatibleDC(hdc);
bitmap = CreateDIBSection(hdc2...
SelectObject(hdc2, bitmap);
BitBlt(hdc2, 0, 0, w, h, hdc, 0, 0);
単純にSetDIBitsToDevice関数の逆をやりたいだけなんですけど、Winって難しいっすね。
0245デフォルトの名無しさん
NGNG表示されてないクライアント領域まで拾いたいのか? それは無理だろう。自分で書いてるアプリなら
- WM_PAINT に対して直接書かずに、いったんバックバッファに書くようにする
- クライアント領域のデータがほしければ、バックバッファから拾ってくる
とするところだが、他のアプリだと汎用的な方法はないと思うなぁ。
>>243
Win98/2000 以降だと、自分がアクティブでない場合には SetForegroundWindow() しても対象のウィンドウが
前面に出てこないから、ちと厳しいと思う。
0246240
NGNGみなさま、ありがとうございました。
・・実はDCってバックバッファみたいな機能を持ってると思い込んでました。
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG上のURLに書かれている「Windows2000でのWM_MOVING」について
分かる方いますか?自分もまったく同じ現象で悩んでいます。
0250デフォルトの名無しさん
NGNGhttp://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_callwndproc.htm
解説
CallWndProc フックプロシージャはメッセージを調べることはできますが、変更することはできません。フックプロシージャがシステムに制御を返した後、このメッセージはウィンドウプロシージャへ渡されます。
誤動作でもなければ、バグでもなければ、使い方が悪いわけでもないです。仕様です。
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGWin3.1+MMEの頃からミキサはmmsystem
0253デフォルトの名無しさん
NGNGWH_CBTでもできるかもしれない。
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNGもっと解るように質問してよ。
0257255
NGNGWindows95ですが、環境変数をプログラムから設定する
APIを教えてください。
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG自分のプロセスのなら SetEnvironmentVariable だけど、
すべてのプロセスのなら RegSetValueEx だな。 (藁
ただしすべてのプロセスの環境変数は、次回再起動時から有効。(当然)
0261デフォルトの名無しさん
NGNG環境がWin95ならautoexec.batに書くんじゃないの?
0262 デフォルトの名無しさん
NGNGそのプロンプトに文字を出力する方法ってどうするのでしょうか?
AllocConsoleだと別のコンソールウィンドウ作成するし、
何かいい方法はないモノでしょうか
0263デフォルトの名無しさん
NGNG0264262
NGNGそれだけだと、どこにも文字が表示されなかったんですよ。
で、AllocConsoleを使ったら、別のコンソールウィンドウが
作成されてそちらに文字表示されてしまいますし。
起動元のDos画面のstdoutを取得する方法がわかれば
いいんですが・・・
0265デフォルトの名無しさん
NGNGsubsystem:windowsで、コマンドプロンプトから起動した場合のみ、
そのコマンドプロンプトを利用してWriteConsoleする、ショートカット等
から、起動した場合、コマンドプロンプトは表示も利用もしない、という
事なら、やり方はわからないなー。
0266デフォルトの名無しさん
NGNG0267266
NGNG0268262
NGNGコマンドプロンプトに文字を出力し、ショートカットなど
から起動した場合はウィンドウを作成して処理をする
方法です。
素直に処理する方法ってなさそうですね。
あきらめてウィンドウで処理するようにするか・・・
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG何か長さの目安ってある?
0272デフォルトの名無しさん
NGNGそれ以上の長さのファイル名が扱えても意味ないでしょ?
0273271
NGNG0274デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています