Win32API質問箱 Build125
レス数が950を超えています。1000を超えると書き込みができなくなります。
>>848
レス先間違ってる訳ではないですよね?
レスの意味が分からないのですが、見合う見合わないはあなたが判断することではないでしょ
論点は見合うか見合わないじゃないですよということと、言葉の定義にこだわってる(?)なら
テンプレからこだわってくださいねって書いてるだけですが >>850
反論できずに人格攻撃かよw
ダサ過ぎる
>>851
そりゃその理解力だとわからんだろうなw
見合う見合わないの判断を誰がするかなんて話してない
見合う可能性があってそれに対してまでも
> 「使わんでよろしい」
って言うバカがいたって言うだけの単純な話 >>852
自演も隠さねえなw どっちがダセえんだよ
カスにカスって言うことに理屈はねえよバカス
使わんでよろしいの真意も書いてるけど、お前は読めないから要件ばかり固執して逃げてんだろ
あと、人格攻撃はお前が真っ先にしてきたことだからな
アホだから覚えてないだろうが >>854
> 使わんでよろしいの真意も書いてる
どこに書いてるのかなぁ?
レス番示して引用してみ
まあどうせ言い訳して逃げるんだろうけど
あとアホにアホって事実を伝えるのは人格攻撃と違うぞw >>855
じゃあ俺のは人格攻撃じゃないのは分かるね?いや、アホだから分からんか
このやりとりが始まってからの書込みすら追いかけられないドアホは
今後も勝利宣言に固執するんだろうなあ >>856
あれ?
> 使わんでよろしいの真意も書いてる
はどうなったのかな?
ごたくはいいからはよ書けよ
書けないなら黙ってろよ、恥の上塗りするだけだし
あとお前のは人格攻撃
根拠も示せずにカスとか喚いてるだけだしw >>857
すごくはっきり書いてるよ
ちゃんと読みなよ
日本語検定中 >>858
うん、ずっとそこだよ
そもそもスレチと言いながらレスし続けるのはちょっと矛盾してないかね?
>>859
低能がよくやる方法でごまかそうと必死だな
勢いで
> 使わんでよろしいの真意も書いてる
って書いたもののどこにも書いてなくてどうしようか顔真っ赤ってパターンw
これまでも何度も見たわ ていうか、何1つ技術論になってない。
どうでも良い話ばかりで意味が無い。 >>860
鏡を見なよ
書いてること読めないくせに、書いてないことにして逃げてる君が居るよ
日本人じゃないのかなあ? >>864
「書いてる」って強弁するしかない低能乙
低能のパターンっていつも同じだなw >>866
IDたどればわかるって言うのも低能がよくやる手
もちろんどんだけたどっても出てこない
出てくると言うなら
> レス番示して引用
するだけでいいんだけど、やれないから色々知恵を絞って言い訳してる
まあ知恵絞っても所詮低能の知恵だからいつものパターンしか出てこないけどなw 匿名掲示板にないものをあてにする
そもそも根本的なことがわかってないまま
おかしい前提でわめくやつってよくいるよね >>867
はい、日本語検定終了です
無能をご自身で証明しましたね
854 :デフォルトの名無しさん :sage :2019/12/13(金) 20:55:09.79 (p)ID:azLSlpn/(6)
このIDすら辿れんの?検索って言葉も知らなかったの?
書込み6つのうち、理由書いてるの一つだけだぞ
これでも使わなくていい理由に該当する日本語文章を理解できないなら、マジモンだわ >>869
知ってるならお前こそ無駄なレスするなよw
>>870
たどっても書いてないからなぁ
書いてると言うならとっとと
> レス番示して引用
しなよ
まあできないからグダグダ言うしかないんだろうけどw スレチの指摘がスレチって小学生ですか?
スレ内検索方法もスレチですよ 5ch初心者か?
嵐の相手する奴もまた嵐
って言葉も知らんの? ここが適切かどうか解りませんが最近のWindows10で腑に落ちないことが
32bitのアプリ内からプリンタドライバ経由でファイル生成を行ってたんですが
実体のファイルが無い(=親プロセスから見えない)のに処理が完了するようになってました
少なくともWindows7やWindows10初期では出なかった問題なのでここ最近のアップデートで
関連する何かの仕様変更があったのでしょうか?
今までは次ステップ処理で単にファイルの存在確認だけで問題無かったのですが
対策として存在確認の前に生成されていない状況を想定し、ウェイト入りで
複数回確認することで回避は出来ています
変更内容によっては他の箇所も潜在的な問題が埋まってることになるのでいっぱい見直さないと・・・ ファイル生成完了するまで処理が戻ってこなかったのに、完了前に戻ってくるようになったって事?
これはむしろ昔からそのような仕様だったような
印刷枚数を厳密に管理するためにファイルに吐いてから自分で印刷をかけるシステムを
組んだことあるけど、ファイル生成完了まで待つ処理を作ってた記憶がある
ファイルが見えないだけなら権限の問題じゃないのかね >>876
ファイル生成完了前に戻ってくるようになった、という認識です
Windows2000の時に組んで今年に入るまでは問題報告を受けてませんでした
アクセス権の反映と思って(あるけど触れない)単純に1〜2秒のウェイト入れて一時的に
回避してたのですがそれでもおかしい時があるのでキッチリ見えるようになるまで待つようにしました
Windows7の時にもの凄い回数の負荷テストを乗り越えてた処理なので
少なくともWindows10以降からの仕様とは思ってるですけどねぇ・・・ >>877
Win95〜ME辺りの相当前のことなのでちゃんと覚えてなかったゴメン
ソース引っ張り出してみたけど、単にメッセージループ挟みながら
出力ファイルをaccess関数に渡して0が返ってくるの待ってるだけだった
この後自分でポートに出力してる流れ
この時のaccessが0を返すタイミングがファイル作成中なのか終了後なのかもはやよく分からないけど、
ファイル作成中なら後のポート出力で死にそうなんだよね・・
古すぎてもう動作確認無理
この辺の動きはプリンタードライバーによっても違ったような気もする
(意図した動きをEPSONはするけどCANNONはしなかったとかで、EPSONを採用したような)
いずれにせよ古すぎる話なので流し読みしてください せっかくなのでもちょい情報共有
PrinterにFileName与えて印刷ジョブ作ってファイル保存させているのですがこのファイルが見えない
何かアンチウィルス系ソフトが引っかけてるのかと思って読み書き出来るようになるまで待つループを
入れてはみたけどそもそも見えない状態で印刷処理が終了して帰ってきてます
後工程ですがAdobeのDistillerAPIで上記のファイルからPDFに変換させてるんですが
明確にPDFファイル生成終わってから戻るってプロパティを指定しているにも関わらず
実体ファイルが見えない状態で元プロセスに戻ってくるって所です
子プロセスで生成したファイルを参照する場合、同期(処理完了待ち)してても
ちゃんと実体ファイルがある(見える)かどうか確認しろって仕様なんでしょうね >>877
ファイル生成に使っている関数はなんなのかとか、
作成先はローカルHDDなのかネットワーク越しなのかその他のデバイスなのかとか とりあえずもちつけ
\もちつきワッショイ/
+ +
ペタン
+ +
/■\ ||| /■\
(´∀`) _ (´ー`)
( つ つ | |=O=O=)
`) ) )| ̄ ̄ ̄|( ( (
(_)_)|´∀`|(_(_)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 質問させてください。
コマンドプロンプトが入力待ちしている時に、右クリックするとクリップボード内のテキストが貼り付けされますが、
キーやマウスの入力エミュレートを使わずに、似たことを外部プロセスから実行する方法ってありますか?
具体的には、所定の文字列をコマンドプロンプト入力待ち領域に貼り付けて使えるようにしたいです。
WriteConsoleOutput()はあくまでも文字列をコマンド窓内に描画するだけであり、これを入力文字列としては使えないという認識です。 >>891
コマンドプロンプト版のhistoryにあたる doskey /h だけでは不満でdoskey /h の結果を使って、
プロンプト上で選んだ履歴文字列をプロンプトに出力して使えるようにし、
TABコマンドやF7, F8押下コマンド みたいな挙動が実現できればと思っています。 F7押下で履歴リスト選択がCUIとして表示されますが、これを別プロセスで実現し、リスト選択した結果を呼び出し元プロセスのコマンドプロンプトに渡せればな、と。 ちょっと教えてください
スリープ解除後、自作アプリのウィンドウが勝手に
OSによって動かされることがあるんですが
ユーザでなくOSによってウィンドウが
移動させられたことを知る方法ってあります?
もしあれば教えてください 誰に移動さられようが普通にウィンドウメッセージが飛んでくるんじゃねえの スリープ前後で瞬間的に解像度が変わっているんだろう
で、解像度の変更を監視するWin32APIは知らないけど
SystemEventsクラスで監視はできるらしい
ttps://smdn.jp/programming/tips/displayresolutionchanged/ Windows Terminal ちょっと使ってみたんだが、良さがわからなかった。
マイクロソフト公式の「車輪の再発明」って感じ。 >>896,897
DisplaySettingsChangedでちょっとテストしてみます WM_DISPLAYCHANGEで試してみました
質問には関係ありませんが、4KとFHDのデュアルモニタ構成で
スリープ復帰後にサブのFHDモニタのほうが先にアクティブになるのが原因で
個々のウィンドウが移動してしまうみたいです
22:51:29- Width=3840 Height=2160 MonitorCount=2 Left=3183 Top=921
-- Display Sleep
23:07:52- Width=1920 Height=1080 MonitorCount=1 Left=1271 Top=461
23:07:54- Width=3840 Height=2160 MonitorCount=2 Left=2542 Top=922 display portで繋いでると、ディスプレイの電源offを感知して
offってないディスプレイに勝手にウィンドウを移動するのがうざくてしかたない
offったディスプレイの電源をonしたら戻すならまだ許すんだけどそれはしてくれない
この動作をどこかのレジストリとかで止められないのかな スレチ便乗で申し訳ないけど、作業中にDPモニターがいきなり真っ暗になってスリープに突入、
そのまんまキーを押すと復帰するけど、>>901,903のような現象にはならない
これは別件かな? >>905
モニターがスリープです
PCが突然死したのかと思いきやキーを押すと復帰して、
ウィンドウ・アイコン類の位置は不変で復帰
スレチでスマン >>901
レジストリ云々の問題じゃなく単にモニタの電源のハード不良じゃないの
人間も寒いと急死したりするし あ、 DisplayPortの仕様の欠陥か
失礼失礼 ありがとう
>903の記事読んで適当にググってみたら、結構文句が出てる件なんだな
当たり前か
で、結局一番まともな解決法は>902というね…
OSが勝手に移動するのをやめてくれるだけでいいんだけどなぁ モニタが急死したときには移動してくれると嬉しいけどなあ
急死と休止を判別できれば良いだけなのに >offったディスプレイの電源をonしたら戻す
を行う常駐アプリは比較的簡単に作れそう。
さらに、2ndディスプレイがオフられた時、そこにあった窓は最小化する機能も上記と併せて作れそうだな。 コマンドプロンプト上で doskey /reinstall とコマンド実行したら何が起きるのが正しいの? オーラロードが開かれた。きらめく光、オレをうつ。
conhost.exe、コアダンプ吐いても恐れはしない。飛び込めばいい。
肉を切らせてとどめを刺せば。 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;
}
public static uint GetIdleTime() {
LASTINPUTINFO lastInPut = new LASTINPUTINFO();
lastInPut.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(lastInPut);
GetLastInputInfo(ref lastInPut);
return (uint)Environment.TickCount - lastInPut.dwTime;
}
} 4時間アイドル状態になってたらハッカーも侵入しやすそうだからな
知りたい情報の一つだろう EnableWindow(hwnd, FALSE);
この状態でhwndのウィンドウがクリックされた事を知るにはどうすればいいですか?
モーダルダイアログを表示してる間はそれ以外のウィンドウを無効にしてるんですが(MessageBoxで言う所のTASKMODAL)
hwndがクリックされたら有効になってるモーダルダイアログをアクティブにしたいんです >>918
hwndをモーダルなウィンドウのparentにしておけば良いんじゃね >>921
ありがとうございます
それだと親の時だけFlashWindowとMessageBeepの動作になるんですよね
セオリーかはわかりませんがこれで目的の動作になりました
// クリックされた側のプロシージャ内
case WM_SETCURSOR:
if(HIWORD(lParam) == WM_LBUTTONDOWN)
if(LOWORD(lParam) == (WORD)HTERROR)
// hwndがクリックされた時の動作 GetGlyphOutline などで文字画像を取り出そうとすると、フォントが持ってない文字は代わりの文字を出力してくる。
(例えば、昔の毛筆フォントでは「(はしご高)」などはMSゴシックになる。)
これを抑制したいので、そのフォントがグリフデータを持っているかどうか、調べる方法はありますでしょうか?
すれ違いと言われてここを紹介されました。 フォントフォールバックやらフォントリンク無視したいならUniscribeのAPI使えばいけるかもな FreeFont とかの DLL 使っても良いと思うし
グリフがあるかどうか確認したいだけなら
ファイルを直接操作してインデックスがあるかどうかだけ観ても良い 923ですが、GetGlyphIndices で自己解決しました。ありがとうございました。 CreateWindowをした時に、強制的にウィンドウが開かれてしまうのですが、
これを最初は非表示にすることってできないでしょうか? トップレベルウィンドウの事ならShowWindow SW_HIDEにする >>928
WS_EX_LAYEREDにしておくと初期状態で透明度100%じゃなかったっけ
あるいはcx,cyを1,1にしといて、あとでSetWindowPosとか 即表示にしてないはずなのに一瞬出るって問題ちょくちょく出るかんな 理由は忘れたし検証する気はないが、普段非表示で必要時のみウィンドウを表示する
アプリを作ったときは CreateWindowEx を使ってウィンドウサイズ0でやってた 初回のShowWindowではSW_xxxは無視される >>935
SW_HIDE試したけど無視されずに非表示になったよ STARTUPINO si;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;
で、こっちが優先される
SW_SHOWNORMALだとアプリケーションの設定に従うようだ START /MIN "" "C:\Windows\Notepad.exe" reg export HKCU\Software\...
でレジストリの内容をエクスポートできますが、
このコマンドと同じことをAPIを使って行うことはできますか? >>941
やっぱり自前で一から組み立てて真似しないといけないんですかね。
常駐ソフトの終了時にreg exportをCreateProcessで実行したいんですが、
WM_ENDSESSIONの中ではCreateProcessは失敗するようなんです。 >>943
起動されたままWindowsを終了したときは、WM_DESTROYは来ないようです。
WM_QUERYENDSESSIONやWM_ENDSESSIONしか来てませんでした。 WM_CLOSE とか WM_DESTROY とか自分で呼べば >>945
WM_QUERYENDSESSIONやWM_ENDSESSIONの中でウィンドウを破棄しても、
そこからCreateProcessは呼べないようです CreateProcessを呼んでからCloseするんやろ WM_DESTROYとか来ないね
まあ聞いてる間に自分で組んでたらとっくに終わってる感
キーを読みながらぐるぐるループ回して吐くだけでしょ? WM_ENDSESSIONから戻った後はたとえイベント発火したとしてもkillされる可能あるし >>946
別スレッドでWM_ENDSESSION来たらやってみるのは?
あとShellExecuteはダメなん? typedef struct
{
WORD idReserved;
WORD idType;
WORD idCount;
} ICONDIR;
#pragma pack( push )
#pragma pack( 2 )
typedef struct
{
BYTE bWidth;
BYTE bHeight;
BYTE bColorCount;
BYTE bReserved;
WORD wPlanes;
WORD wBitCount;
DWORD dwBytesInRes;
WORD nID;
} GRPICONDIRENTRY;
#pragma pack( pop )
で、ICONDIR の後ろに GRPICONDIRENTRY を個数分だけ並べて ico ファイルから引っ張ってきたデータをそれに突っ込んでUpdateResource()してる。
もちろん対応するRT_ICONにイメージは追加してある。
実行時にエラーも出ないし、ResourceHackerなどで見ても、ちゃんと登録されているのだが、エクスプローラーの表示を特大アイコンにしても48x48の中央寄せ表示になってしまうんだ。
マルチプルアイコンを、::UpdateResource()で登録するとき、なにかシングルアイコンと比べて注意することがあるなら教えてください。
参考URLでもOKです(探してみたけれどシングルアイコンのものしか見つからなかった) レス数が950を超えています。1000を超えると書き込みができなくなります。