[過去ログ] Win32API質問箱 Build125 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
903
(2): 2019/12/26(木)21:38 ID:W3/psl0T(1) AAS
>>901
外部リンク[html]:akiba-pc.watch.impress.co.jp
904: 2019/12/26(木)22:38 ID:6ESypvgt(1) AAS
スレチ便乗で申し訳ないけど、作業中にDPモニターがいきなり真っ暗になってスリープに突入、
そのまんまキーを押すと復帰するけど、>>901,903のような現象にはならない
これは別件かな?
905
(1): 2019/12/27(金)09:44 ID:sALG2rcq(1) AAS
PCがスリープかモニターがスリープか?
906: 2019/12/27(金)12:49 ID:Jp3jdKct(1) AAS
>>905
モニターがスリープです
PCが突然死したのかと思いきやキーを押すと復帰して、
ウィンドウ・アイコン類の位置は不変で復帰

スレチでスマン
907: 2019/12/28(土)09:38 ID:YUnrK54G(1/2) AAS
>>901
レジストリ云々の問題じゃなく単にモニタの電源のハード不良じゃないの
人間も寒いと急死したりするし
908: 2019/12/28(土)09:39 ID:YUnrK54G(2/2) AAS
あ、 DisplayPortの仕様の欠陥か
失礼失礼
909: 901 2019/12/29(日)02:37 ID:vZG3cDjt(1) AAS
ありがとう
>903の記事読んで適当にググってみたら、結構文句が出てる件なんだな
当たり前か
で、結局一番まともな解決法は>902というね…
OSが勝手に移動するのをやめてくれるだけでいいんだけどなぁ
910: 2019/12/29(日)11:23 ID:tkVKn3Ql(1) AAS
モニタが急死したときには移動してくれると嬉しいけどなあ
急死と休止を判別できれば良いだけなのに
911: 2019/12/29(日)11:56 ID:NDUAcuzf(1) AAS
>offったディスプレイの電源をonしたら戻す
を行う常駐アプリは比較的簡単に作れそう。
さらに、2ndディスプレイがオフられた時、そこにあった窓は最小化する機能も上記と併せて作れそうだな。
912: 2020/01/13(月)02:20 ID:KqHO+Fgo(1) AAS
コマンドプロンプト上で doskey /reinstall とコマンド実行したら何が起きるのが正しいの?
913: 2020/01/14(火)03:51 ID:D4OVEYsz(1) AAS
自分のマシンで起きたことが正しい
914: 2020/01/14(火)11:19 ID:R0T58PMv(1) AAS
魔界への扉が開きました
915: 2020/01/14(火)12:05 ID:9+tQ8K1Z(1) AAS
オーラロードが開かれた。きらめく光、オレをうつ。
conhost.exe、コアダンプ吐いても恐れはしない。飛び込めばいい。
肉を切らせてとどめを刺せば。
916: 2020/02/08(土)00:55 ID:Qm4Y0Gmj(1) AAS
GetLastInputInfoって管理者権限じゃないとちゃんと値が返ってこないっぽいんだけど、こんなもんなんですかね
アイドル時間知りたいだけなのに管理者って・・・

using System;
using System.Runtime.InteropServices;

public class GIT {
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
internal struct LASTINPUTINFO {
public uint cbSize;
public uint dwTime;
省8
917: 2020/02/08(土)10:26 ID:yaVA2/v3(1) AAS
4時間アイドル状態になってたらハッカーも侵入しやすそうだからな
知りたい情報の一つだろう
918
(1): 2020/02/08(土)11:37 ID:1udHLgDG(1/2) AAS
EnableWindow(hwnd, FALSE);
この状態でhwndのウィンドウがクリックされた事を知るにはどうすればいいですか?
モーダルダイアログを表示してる間はそれ以外のウィンドウを無効にしてるんですが(MessageBoxで言う所のTASKMODAL)
hwndがクリックされたら有効になってるモーダルダイアログをアクティブにしたいんです
919: 2020/02/08(土)11:51 ID:v1IBJgnW(1/3) AAS
管理者じゃなくても実行出来てるみたいだが
920: 2020/02/08(土)11:52 ID:v1IBJgnW(2/3) AAS
ああ実行できるだけで値が可笑しいのか
921
(1): 2020/02/08(土)12:05 ID:v1IBJgnW(3/3) AAS
>>918
hwndをモーダルなウィンドウのparentにしておけば良いんじゃね
922: 2020/02/08(土)16:25 ID:1udHLgDG(2/2) AAS
>>921
ありがとうございます
それだと親の時だけFlashWindowとMessageBeepの動作になるんですよね

セオリーかはわかりませんがこれで目的の動作になりました

// クリックされた側のプロシージャ内
case WM_SETCURSOR:
 if(HIWORD(lParam) == WM_LBUTTONDOWN)
  if(LOWORD(lParam) == (WORD)HTERROR)
   // hwndがクリックされた時の動作
923: 2020/02/09(日)21:47 ID:VD5bohdG(1) AAS
GetGlyphOutline などで文字画像を取り出そうとすると、フォントが持ってない文字は代わりの文字を出力してくる。
(例えば、昔の毛筆フォントでは「?(はしご高)」などはMSゴシックになる。)
これを抑制したいので、そのフォントがグリフデータを持っているかどうか、調べる方法はありますでしょうか?
すれ違いと言われてここを紹介されました。
924: 2020/02/09(日)22:40 ID:iEENywsd(1) AAS
フォントフォールバックやらフォントリンク無視したいならUniscribeのAPI使えばいけるかもな
925: 2020/02/10(月)16:17 ID:TGcYvj29(1) AAS
FreeFont とかの DLL 使っても良いと思うし
グリフがあるかどうか確認したいだけなら
ファイルを直接操作してインデックスがあるかどうかだけ観ても良い
926: 2020/02/11(火)01:46 ID:N6oHYtf1(1) AAS
923ですが、GetGlyphIndices で自己解決しました。ありがとうございました。
927: 2020/02/11(火)11:42 ID:KtXysiBK(1) AAS
FreeFont じゃない FreeType
928
(1): 2020/02/14(金)04:06 ID:+zlzzx/H(1) AAS
CreateWindowをした時に、強制的にウィンドウが開かれてしまうのですが、
これを最初は非表示にすることってできないでしょうか?
929: 2020/02/14(金)04:53 ID:0uq7uYLU(1) AAS
WS_VISIBLEを抜く
930: 2020/02/14(金)08:32 ID:L0qSgtfV(1) AAS
トップレベルウィンドウの事ならShowWindow SW_HIDEにする
931: 2020/02/14(金)14:52 ID:1V6axvhx(1/2) AAS
>>928
WS_EX_LAYEREDにしておくと初期状態で透明度100%じゃなかったっけ
あるいはcx,cyを1,1にしといて、あとでSetWindowPosとか
932: 2020/02/14(金)17:55 ID:I6SUroxS(1) AAS
(1レス目で答え出てるんちゃうか・・・)
933: 2020/02/14(金)19:42 ID:1V6axvhx(2/2) AAS
即表示にしてないはずなのに一瞬出るって問題ちょくちょく出るかんな
934: 2020/02/15(土)03:03 ID:6/Lp/FUD(1) AAS
理由は忘れたし検証する気はないが、普段非表示で必要時のみウィンドウを表示する
アプリを作ったときは CreateWindowEx を使ってウィンドウサイズ0でやってた
935
(1): 2020/02/15(土)05:39 ID:ceUVsII7(1/2) AAS
初回のShowWindowではSW_xxxは無視される
936: 2020/02/15(土)09:27 ID:w0AGl45A(1) AAS
>>935
SW_HIDE試したけど無視されずに非表示になったよ
937: 2020/02/15(土)16:03 ID:0hgUDlXi(1) AAS
ウィンドウの種類による
938: 2020/02/15(土)18:47 ID:ceUVsII7(2/2) AAS
STARTUPINO si;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;
で、こっちが優先される
SW_SHOWNORMALだとアプリケーションの設定に従うようだ
939: 2020/02/16(日)00:51 ID:I6oNTTaj(1) AAS
START /MIN "" "C:\Windows\Notepad.exe"
940: 2020/02/24(月)12:55 ID:gSBwNpi/(1) AAS
reg export HKCU\Software\...
でレジストリの内容をエクスポートできますが、
このコマンドと同じことをAPIを使って行うことはできますか?
941
(1): 2020/02/24(月)13:53 ID:9Kd/PSPa(1) AAS
このあたりを使えばできるんじゃね、知らんけど
外部リンク:docs.microsoft.com
942: 2020/02/25(火)09:52 ID:Hq3bKq4G(1/3) AAS
>>941
やっぱり自前で一から組み立てて真似しないといけないんですかね。
常駐ソフトの終了時にreg exportをCreateProcessで実行したいんですが、
WM_ENDSESSIONの中ではCreateProcessは失敗するようなんです。
943
(1): 2020/02/25(火)10:04 ID:1Gze6tYX(1/2) AAS
WM_DESTROYでやれば
944: 2020/02/25(火)10:28 ID:Hq3bKq4G(2/3) AAS
>>943
起動されたままWindowsを終了したときは、WM_DESTROYは来ないようです。
WM_QUERYENDSESSIONやWM_ENDSESSIONしか来てませんでした。
945
(1): 2020/02/25(火)13:23 ID:FzVRg2bh(1/2) AAS
WM_CLOSE とか WM_DESTROY とか自分で呼べば
946
(1): 2020/02/25(火)16:32 ID:Hq3bKq4G(3/3) AAS
>>945
WM_QUERYENDSESSIONやWM_ENDSESSIONの中でウィンドウを破棄しても、
そこからCreateProcessは呼べないようです
947: 2020/02/25(火)18:18 ID:FzVRg2bh(2/2) AAS
CreateProcessを呼んでからCloseするんやろ
948: 2020/02/25(火)18:21 ID:1Gze6tYX(2/2) AAS
WM_DESTROYとか来ないね
まあ聞いてる間に自分で組んでたらとっくに終わってる感
キーを読みながらぐるぐるループ回して吐くだけでしょ?
949: 2020/02/25(火)18:46 ID:yWXkUq9v(1) AAS
WM_ENDSESSIONから戻った後はたとえイベント発火したとしてもkillされる可能あるし
950: 2020/02/25(火)21:59 ID:B0KlsSQW(1) AAS
>>946
別スレッドでWM_ENDSESSION来たらやってみるのは?
あとShellExecuteはダメなん?
951: 2020/02/26(水)03:04 ID:KxcyAhRx(1) AAS
typedef struct
{
WORD idReserved;
WORD idType;
WORD idCount;
} ICONDIR;
#pragma pack( push )
#pragma pack( 2 )
typedef struct
{
省15
952: 2020/02/26(水)11:15 ID:wiEfavJ1(1/2) AAS
外部リンク:docs.microsoft.com
953: 2020/02/26(水)11:17 ID:wiEfavJ1(2/2) AAS
外部リンク[htm]:www.codeguru.com
外部リンク[php]:forums.codeguru.com
954: 2020/02/26(水)19:34 ID:dDQscU5G(1) AAS
外部リンク:jyn.jp
955: 2020/02/28(金)18:42 ID:HAMXUqwp(1/2) AAS
外部リンク[htm]:www.setsuki.com
956: 2020/02/28(金)18:45 ID:HAMXUqwp(2/2) AAS
外部リンク:stackoverflow.com
957
(1): 2020/03/05(木)00:47 ID:HyVcGvBE(1/2) AAS
WM_WINDOWPOSCHANGING
というメッセージは、lParamにWINDOWPOS構造体のアドレスが渡されてきて、
その中のflagsメンバなどを修正するとZ-Orderの変化を阻止したり出来ます。
それは実験的に確認しました。質問は、この仕組みのことなのですが、
GetMessage()でこのメッセージを受けた後、DispatchMessage()経由で WindorProc()
に来ることが前提なのかと言うことです。逆に、
GetMessage()でこのメッセージを受けた後、DispatchMessage()を経由せずに、独自に
WindowProc()を呼び出した場合は、WINDOWPOSの中を変えたとしてもWindows Systemは
感知しないのではないかと思うのです。
今までメッセージループ内で定型として漠然と DispatchMessage() を使ってきたのですが、
省1
958: 2020/03/05(木)01:09 ID:HyVcGvBE(2/2) AAS
>>957
すみません。これは、Postではなく、Sendで送られてくるメッセージのようです。
だから、メッセージループや GetMessage 関数は無関係なんですね、恐らく。
959: 2020/03/08(日)15:08 ID:nGQiIF3A(1/2) AAS
PeekMessage()のPM_QS_SENDMESSAGEの働きが分かりません。MSDNによれば:
「Process all sent messages.」
「During this call, the system delivers pending messages that were sent to windows owned by the calling thread using the SendMessage, SendMessageCallback, SendMessageTimeout, or SendNotifyMessage function. 」
となっていますが、SendMessage()でpending messagesされているメッセージとはいかなるものなんでしょうか。
この説明だとSendMessage()されたメッセージの内、pending状態にあるものは、PM_QS_SENDMESSAGEを指定したPostMessage()によって取得できることになってしまいますが、どういうことなのか分かりません。
960
(1): 2020/03/08(日)15:33 ID:Y2NtS7Rm(1) AAS
WM_PAINTとかはqueueの中で後回しにされるとかなんとか
961: 2020/03/08(日)16:27 ID:nGQiIF3A(2/2) AAS
>>960
WM_PAINTは、この文脈では SendMessage() とは直接関係ないようですが。
962: 2020/03/08(日)23:38 ID:LncuZlt6(1) AAS
別スレッドからsendされたメッセージとそのスレッド自体は待たされてる
963
(1): 2020/03/09(月)16:07 ID:2N4Go4fT(1) AAS
MS謹製の訳
「PeekMessage 関数を呼び出すと、呼び出し側スレッドが所有しているウィンドウへ送信されたメッセージのうち、保留されていたものを取得できます。
SendMessage、SendMessageCallback、SendMessageTimeout、SendNotifyMessage の各関数を使って送信されたメッセージが、これに該当します。」
他スレッドから送られたSendMessageは、PeekMessageを呼び出したときに受け取ることができる。
964: 2020/03/10(火)12:35 ID:Fz4ou6bN(1/2) AAS
Windows OSのバイブル『Windows Internals』を日本語解説するプロジェクトが“GitHub”で開始
実際に動作するアプリで高度かつ難解な内容をコードレベルで理解
外部リンク[html]:forest.watch.impress.co.jp

>高度かつ難解と評される同書も、実際に動作するC++/Win32 APIのコードをみながら読み進めれば理解が深まるかもしれません。
965: 2020/03/10(火)12:40 ID:Fz4ou6bN(2/2) AAS
windows-internals-guide / security
外部リンク:github.com
966
(1): 2020/03/10(火)14:11 ID:5w+xr38c(1/4) AAS
>>963
ありがとうございます。
ただし、その話は関係は有りそうですが不明瞭なので、もう少し詳細が有ればいいのですが。
967
(1): 2020/03/10(火)15:57 ID:JsRj3KRf(1) AAS
>>966
他スレッドからSentされたmessageはPeekMessageで取得するのではありません。
これらのmessageはPeekMessageの内部で処理されます。
968
(1): 2020/03/10(火)16:18 ID:6U0G3mdW(1) AAS
他スレッドからのsendはここの図がわかりやすい
外部リンク[html]:chokuto.ifdef.jp
(HSP関連の記述は読み飛ばすべし)
969: 2020/03/10(火)16:39 ID:5w+xr38c(2/4) AAS
>>967
すみませんが、その日本語は何をおっしゃっているのか分かりません。
970
(1): 2020/03/10(火)16:43 ID:5w+xr38c(3/4) AAS
>>968
その図の意味は分かりました。
しかし、それだと他スレッドへSendMessage()した場合、
他スレッドがGetMessage()やPeekMessage()を行って、DispatchMessage()
などを行わない限りは (他スレッドの)WndProc の実行が始まらないことに
なります。
しかし、現実には他スレッドへのSendMessage の場合でも、他スレッドで
Get, Peek, Dispatch が全く実行されてなくても、WndProc は
実行されると思います。
971: 2020/03/10(火)18:18 ID:X+eVfRrs(1) AAS
そだね
972: 2020/03/10(火)18:42 ID:5w+xr38c(4/4) AAS
>>970
それか、他スレッドへ SendMessage() した場合、勝手に WndProc() が call
されてしまうとプログラムのデータが破壊されてしまう可能性があるので、
必ず Queue に入れてから、メッセージループの GetMessage() と DispatchMessage()
を介しての実行になるのかもしれませんね。
973: 蟻人間 ◆T6xkBnTXz7B0 2020/03/15(日)10:32 ID:C2+jTQYL(1) AAS
メッセージキューは思ったよりも複雑な問題だ。
EternalWindowsに詳しい解説がある。
外部リンク[html]:eternalwindows.jp
このあたりを読んでみるとよい。
974
(1): 2020/03/22(日)22:07 ID:Y1m3LOPd(1/5) AAS
ファイル名の半角文字を小文字に統一したいのですが、MoveFile を使っても
大小の違いだけでは同一名と判断されてうまくいきません。
何かスマートな対策がありますでしょうか?
975
(1): 2020/03/22(日)22:11 ID:vCMoGjtA(1/2) AAS
アンダーバー付きとかのファイルにリネームしてから本来のファイル名にする
976: 2020/03/22(日)22:14 ID:Y1m3LOPd(2/5) AAS
>>975
一度別のファイル名にしても、元のファイル名を覚えているようでダメでした。
977
(1): 2020/03/22(日)22:32 ID:Y1m3LOPd(3/5) AAS
MoveFile("A.TXT","B.TXT");
getchar();
MoveFile("B.TXT","a.txt");

これなら成功するので(笑)、おそらく時間稼ぎする方法があると思うのですが。
978: 2020/03/22(日)22:45 ID:uAP5d0yV(1) AAS
MoveFileExでMOVEFILE_WRITE_THROUGH付ければいいんでね?
979: 2020/03/22(日)23:07 ID:Y1m3LOPd(4/5) AAS
だめでした。
980: 2020/03/22(日)23:19 ID:CUaNxsQr(1/2) AAS
>>974
MoveFile("A.txt","a.txt"); でちゃんと名前変わったんだけど
うまく行かないのはコンパイラの最適化とかで無かったことにされているだけじゃないの?
それともGetLastError()とかでそういうrたーが出てるの?
981: 2020/03/22(日)23:20 ID:CUaNxsQr(2/2) AAS
そういうrたーが出てるの? → そういうエラーが出てるの?
982: 2020/03/22(日)23:22 ID:vCMoGjtA(2/2) AAS
中間ファイル名を噛ませなくてもMoveFileでいけるみたいなんだけど
表示上変わっていないだけで、最新の情報に更新したら変わったりしない?
983: 蟻人間 ◆T6xkBnTXz7B0 2020/03/22(日)23:23 ID:QaK/2gK6(1) AAS
最新の情報に更新
984
(1): 2020/03/22(日)23:37 ID:Y1m3LOPd(5/5) AAS
俺環かな?と思って、Cドライブ(NTFS)に移すとうまくいきました。
Dドライブ(exFAT/USB)ではうまくいきませんでしたので仕様なんでしょうか。

お騒がせしました。ありがとうございました。
985: 2020/03/22(日)23:41 ID:wzrJAqaa(1) AAS
>>977
getcharじゃなくてb.txtの存在を確認汁
986
(1): 2020/03/23(月)09:36 ID:3LuOM/hB(1) AAS
>>984
FATだとうまくいかないよ
987: 2020/03/23(月)12:17 ID:bf1cRh+B(1) AAS
>>986
確か、FATは、MS-DOS時代、もともとファイル名に大文字小文字の区別が無かった。
コマンドラインからコマンド名やファイル名を小文字で入力しても、大文字のファイルが検索された。
そして、FATのディスクの中の「ディレクトリ構造」の「エントリ」には、必ず全て大文字に直した
ファイル名が記録されていた。
その影響がまだ残っていることがあるようだ。
988: 2020/04/05(日)23:04 ID:5OY2rQyy(1) AAS
フォントの高さの取得方法について質問があります。
現在DCに選択されているフォントの "高さ" を取得して、大学ノートの罫線のようなものを、その高さの
間隔で描画することを考えています。調べてみると GetTextExtentPoint32 というAPIがフォントのサイズを
計算してくれるようなのですが、引数に文字列が要求されます。しかし、罫線と罫線の間にどんな文字列を
描画するかは未定です。現在は適当な1文字だけ指定して高さを求めていますが、その文字よりも高さが
大きい文字が存在する場合、罫線をはみ出してしまうのではないか思います。

特定のフォントの、全ての文字を包含する高さを取得する方法はないのでしょうか。
よろしくお願いします。
989
(1): 2020/04/06(月)07:39 ID:mqwqQyFB(1) AAS
LOGFONT で GetObject ?
990: 2020/04/06(月)17:35 ID:9OrS0ii6(1) AAS
>>989
ご回答ありがとうございます。
符号の違いはありますが、GetTextExtentPoint32 と同じ値が返ってくるようです。いずれも、指定した文字のサイズにかかわらず一定値が返ってくるようなので問題なさそうです。フォントの高さだけが知りたいので GetObject のほうがシンプルですね。ありがとうございました。
991
(1): 蟻人間 ◆T6xkBnTXz7B0 2020/04/07(火)19:03 ID:qBIbpTMr(1) AAS
外部リンク:archive.org
992: 2020/04/07(火)19:09 ID:G5F9VLMp(1) AAS
>>991
下部の他のリンクが色々あるね
993: 2020/05/01(金)21:15 ID:G8jCLL5C(1) AAS
excelVBAでシリアル通信をする為にコード例を探してきて使っています。
ポートのファイルハンドラがわからなくなった場合に強制的にポートを閉じることは可能でしょうか。デバッグリセットかけた際に変数が初期化されてポート操作が出来なくなりました。excelを立ち上げ直すと操作可能になるので何か方法があると思うのですが
994: 2020/05/01(金)21:58 ID:ZJ42fMZB(1/2) AAS
立ち上げ直しで解放されるのはプロセスが終了するからでは?
995: 2020/05/01(金)22:17 ID:ZJ42fMZB(2/2) AAS
Win32API質問箱 Build126
2chスレ:tech
996: 2020/05/03(日)09:49 ID:zajIy9nA(1) AAS
うめぽよ
997: 2020/05/03(日)19:29 ID:WJxvDkhH(1) AAS
UME
user method exchangeという謎の技術名を考えた
何に使うかはしらん
998: 2020/05/03(日)19:31 ID:n4+dE3Bb(1) AAS
Unknown Machine Error
999: 2020/05/03(日)19:41 ID:cVVrQdBT(1/2) AAS
Unrecoverable Memory Error
1000: 2020/05/03(日)19:41 ID:cVVrQdBT(2/2) AAS
U+M*E=1000
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 431日 4時間 32分 32秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
省4
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s