Win32API質問箱 Build123at TECH
Win32API質問箱 Build123 - 暇つぶし2ch262:デフォルトの名無しさん
16/12/03 20:35:28.76 xp0AwakX.net
GO

263:デフォルトの名無しさん
16/12/03 20:36:25.77 xp0AwakX.net
the old new thing

264:デフォルトの名無しさん
16/12/04 11:31:12.68 8oIVw/6i.net
Windows10ってCOMポート番号は最大何番までなんでしょうか?

265:デフォルトの名無しさん
16/12/04 11:37:47.55 NE4G8kum.net
com1~com256まで

266:デフォルトの名無しさん
16/12/04 12:08:20.93 HYzaL+1F.net
昔、レジストリから認識してるポート名を取得するサンプルあったな。
MSDNだったかな

267:デフォルトの名無しさん
16/12/04 12:22:02.41 SxgHpTya.net
select欲しい

268:261
16/12/04 16:50:15.73 8oIVw/6i.net
>>262
>>263
ありがとうございました!

269:デフォルトの名無しさん
16/12/09 00:46:48.41 WzSsU1Dc.net
WM_CHARでWPARAMに入ってくるコード一覧どっかない?
普通のキーならそのままだが、Back SpaceとかCtrl+Vとかのコードが知りたい。

270:片山博文MZ ◆T6xkBnTXz7B0
16/12/09 01:04:26.73 IirsZJ4E.net
>>266
キーが押されてるかどうかの確認は、WM_KEYDOWNを使う。
「仮想キーコード一覧」で検索。
ただし、Ctrl,Shift,Altはmodifiersと呼ばれ、特別扱い。CtrlとShiftは
GetKeyState(VK_SHIFT) < 0
GetKeyState(VK_CONTROL) < 0
で確認でき、AltはWM_NCKEYDOWNで確認できる。

271:片山博文MZ ◆T6xkBnTXz7B0
16/12/09 01:07:15.74 IirsZJ4E.net
訂正。
× AltはWM_NCKEYDOWNで確認できる。
○ AltはWM_SYSKEYDOWNで確認できる。

272:デフォルトの名無しさん
16/12/12 20:09:14.26 UWkfYPy/.net
プログラム実行中のログテキストをエディットコントロールに出力しようと思ったのですが、
32KB制限があり実用できないことが分かりました。
リッチエディットではそのような制限はないようなので、
特に問題なければこれでいこうかと考えているのですが、
他に良い方法があればご教示ください。

273:デフォルトの名無しさん
16/12/12 20:14:54.27 cpVlzpwx.net
>>269
つ AllocConsole

274:デフォルトの名無しさん
16/12/12 20:17:01.65 dREO/TsY.net
EM_SETLIMITTEXT

275:269
16/12/12 20:41:35.46 UWkfYPy/.net
>>270
ありがとうございます。
今回は検索機能とかも付けたいので、エディット系コントロールを利用することにします。
>>271
ありがとうございます。
これで通常のエディットコントロールで32KB以上を扱えます。
助かりました!

276:デフォルトの名無しさん
16/12/13 09:08:32.63 GC6m09wL.net
>>272
検索が必要ならリッチエディット

277:269
16/12/13 21:50:24.46 EhPW3kvE.net
>>273
リッチエディットで実装を進めていて、あとは検索機能だけ、というところまで作れたんですが、
まさかリッチエディット自体に検索機能があったとは・・・!
ここでお聞きしてよかったです。
ありがとうございました!

278:デフォルトの名無しさん
16/12/19 05:43:50.59 qsdLnaaR.net
paint.netのツールウィンドウみたいなやつってどうやって表示するの?
ウィンドウスタイルを色々試してみたけどあれと同じようなウィンドウが出ない。

279:デフォルトの名無しさん
16/12/19 07:17:38.33 jpBVYjvn.net
拡張ウィンドウスタイル使え。

280:デフォルトの名無しさん
16/12/19 23:46:04.62 qsdLnaaR.net
>>276
ありがとう。
拡張スタイル使ってもやっぱり無理だ。
思い通りに動かない。
数年前からずっと謎なんだよなこれ。
動作上問題が少ないから我慢してたんだけども。
それっぽいウインドウは出るものの、paint.netのように全ウインドウがアクティブ状態にならない。
【参考画像】URLリンク(news.softpedia.com)
paint.netを実際に使ってるとよく分かるんだが、
参考画像のようにメインのウインドウもツール用のウインドウも常にアクティブな状態が維持される。
しかし、拡張スタイルでWS_EX_TOOLWINDOWを指定してもアクティブなウインドウは常に1つ。
メインのウインドウをクリックすればツール用ウインドウは非アクティブになり、
ツール用ウインドウをクリックすればメインウインドウは非アクティブになる。
非常に気持ちが悪い。
確かにWS_EX_TOOLWINDOWを利用すればメインウインドウより常に前面になり、
タスクバーにも表示されず、非常にpaint.netのツールウインドウと似たような挙動になるが、
このアクティブ/非アクティブに関しては挙動が全く違う。
ちなみにアクティブ/非アクティブの判断はタイトルバーの色で判断している。
さらに参考画像のツールウインドウのような右上の正方形の閉じるボタンの表示のさせかたも分からない。
・・・と思ったら出てきたわ。
URLリンク(www.catch22.net)
やっと出てきた。
WS_EX_TOOLWINDOWで検索してもノイズが多くてなかなか出てこなかった。
(ノイズ = MSDNのウインドウスタイルの一覧をコピペしただけのゴミサイト)
ノイズゴミサイトマジで迷惑。
嫌がらせでしかない。

281:デフォルトの名無しさん
16/12/19 23:50:28.70 qsdLnaaR.net
結局今回のカギはGoogle画像検索。
ふと「サンプル載せてるサイトの半数くらいはスクショも載せてるのではないか」と思い、
例の拡張スタイルで画像検索。
俺がやりたいのと同じ状況になってる画像を見つけて開いたらビンゴ。
画像検索なんて今まで思いもよらなかったよ。
文字検索するとノイズゴミサイトばかり出てきてどうにもならなかった。

282:デフォルトの名無しさん
16/12/19 23:52:55.75 qsdLnaaR.net
MSDNのコピペサイト作ってるゴミ共は早く死ねばいいのにな。
役に立たないどころか大迷惑。
最近流行りの質の低いキュレーションサイト()と同レベル。

283:デフォルトの名無しさん
16/12/20 00:02:24.24 tFkwVopE.net
>>275の意味がまったくわからなkったわww

284:デフォルトの名無しさん
16/12/20 06:12:08.47 ADGhogoA.net
google personal blocklistでかたっぱしからブロックしてる
xxxユーザー会もノイズ源だね

285:デフォルトの名無しさん
16/12/20 09:20:12.73 F0IdvAwo.net
顔写真ブロックは必須
おまえらキモ面なのに何故あんな目立つ場所に配置すんだ

286:デフォルトの名無しさん
16/12/20 12:55:43.49 lAXr92yw.net
>>278
おめ
興奮は伝わったが
もちつけ

287:デフォルトの名無しさん
16/12/20 13:00:10.44 lAXr92yw.net
>>279
はてぶのことですねわかります

288:デフォルトの名無しさん
16/12/20 16:58:42.80 WXAyO/1W.net
>>277
そういうときはいっそそのソフト解析したら?
Paint.NETなら簡単に逆コンパイルできるし、Spy++とか使うだけでもある程度わかる

289:デフォルトの名無しさん
16/12/20 17:33:10.55 Sq2CbWR0.net
OSSのソフトを逆コンパイルするの?

290:デフォルトの名無しさん
16/12/20 17:44:58.45 F0IdvAwo.net
今はちがうだろ

291:デフォルトの名無しさん
16/12/20 18:45:47.25 lAXr92yw.net
新手のアフィか

292:デフォルトの名無しさん
16/12/20 19:12:59.79 F0IdvAwo.net
アフィだったのかよ。新手すぎてアフィの影すら俺には見えん

293:デフォルトの名無しさん
16/12/20 22:05:37.09 JPbALvOm.net
MSDNのコピペサイト全般のことだろう>アフィ

294:デフォルトの名無しさん
16/12/21 01:04:08.51 HCdO29Rc.net
質問
writefile関数を使用してint型で、データ保存ができません。同じ悩み持ったことある人いらっしゃいませんか。

295:デフォルトの名無しさん
16/12/21 01:09:18.76 GvkBvmPc.net
int Data = 123456;;
DWORD writeLen;
WriteFile(hFile,&Data,sizeof(Data),&writeLen,NULL);
こういうことだろ?

296:デフォルトの名無しさん
16/12/21 01:10:40.03 kLgQ2k1v.net
変数のアドレスをwritefileにわたさないとだめ。数値そのままわたしてるんでしょ

297:デフォルトの名無しさん
16/12/21 21:06:02.77 HCdO29Rc.net
>>292
>>293
ありがとうございます。引数としてアドレスを渡さないといけないのですね。試してみます!

298:デフォルトの名無しさん
16/12/22 08:34:56.43 tk15BRot.net
msdn 関数名
でググる癖をつけよう

299:デフォルトの名無しさん
16/12/22 12:50:31.88 y+mdv7YD.net
-jp もお忘れなく

300:デフォルトの名無しさん
16/12/22 13:04:48.47 hYDEOt1H.net
どうしてこういう訳そのままずっと放置してんだろうな
> 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
> If the function fails, the return value is zero. To get extended error information, call GetLastError.

301:デフォルトの名無しさん
16/12/22 18:24:16.26 zHNnrJEM.net
>>296
なんで付けるの?
誤訳トラップにハマりたいの?
俺は誤訳トラップどころか英語版と日本語版で引数違うトラップにハマったことがあるけども。
日本語版を穴が空くほど見て確認したけど何日経ってもコンパイルが通らず、
何の気なしに英語版開いたら引数の数が違って、
英語版見ながら修正したら一発でコンパイル通ったわ。

302:デフォルトの名無しさん
16/12/22 18:39:46.34 hYDEOt1H.net
>>298
+jp じゃなくて -jp

303:デフォルトの名無しさん
16/12/22 18:47:30.93 YVr1LIe6.net
>>298
今時どんな開発環境使ってるんだよ w
VisualStudio なら関数名 + '(' を入力した時点でプロトタイプが表示されるだろ

304:デフォルトの名無しさん
16/12/22 18:55:29.30 zHNnrJEM.net
>>299
ごめんなさいwww
>>300
その当時はVector辺りで見つけてきた適当なテキストエディタとBCCだったよ。

305:デフォルトの名無しさん
16/12/22 19:02:14.56 tk15BRot.net
>>301
C言語を始めよう!

306:デフォルトの名無しさん
16/12/22 22:46:25.55 +nnZ9oR0.net
レポートタイプのリストビューをクリックしたら、その行のデータに対応する内容を
別の窓に詳細表示するというような動作をしているのですが、クリック時は NM_CLICK
を処理してクリックされた行を nmLv->iItem メンバを参照して知ることができます。
オペレーションとしてはマウスだけではなくキーボード操作でリストビューの選択行を
次々と移動させることも多いので、LVN_KEYDOWN も処理して上記と同様の動作を
させたいのですが、LVN_KEYDOWN 処理時は nmLv->iItem の中身が不定です。
LVN_KEYDOWN 処理時に ListView_GetNextItem で LVNI_ALL | LVNI_SELECTED を
指定して選択行を調べると、キーボードを押して選択行を変更する前の選択行が
得られてしまいます。
この辺は、一旦メッセージループを回すなどしてから現在の選択行を得ること自体は
可能と言�


307:ヲば可能なのですが、ここまでしないとダメなのかという疑問があります。 LVN_KEYDOWN 処理時、もしくはキーボード操作で選択行を変更した際、簡潔に 現在の選択行を得る方法はありますでしょうか?



308:デフォルトの名無しさん
16/12/22 23:02:45.31 hYDEOt1H.net
LVN_ITEMCHANGED

309:デフォルトの名無しさん
16/12/23 14:54:42.80 qGVMhgWM.net
質問です。
win10 x64
windows がキャッシュしてる dns の名前解決結果の一部を書き換えることは可能ですか?
または、名前解決の最中に結果をいじるようなフックは出来ませんか?
例えば、example.com の ttl を長めに書き換える、とかです。
よろしくお願いします。

310:片山博文MZ ◆T6xkBnTXz7B0
16/12/23 15:00:49.80 3xdKhrkh.net
>>305
デバッグ特権があれば、別のプロセスのプロセスメモリーにアクセスすることも可能。

311:デフォルトの名無しさん
16/12/23 15:29:20.66 Kb3OsEli.net
対象アプリ限られてくるけどAPIフックすりゃ簡単に結果改竄はできるな
キャッシュ改竄はフィルタードライバあてる面倒なのしか思いつかない

312:デフォルトの名無しさん
16/12/23 15:36:22.73 5J5pLbD7.net
以下の処理を実装したく、助言をお願いします。
ダブルクリックや右クリ開くなどで、ファイルを開く際に
関連付けの有無に関わらず、そのファイルのパスを取得したい。
ShellProcあたりのフックかと考えましたが、パスをどうやって
調べるのか分かりません。
どうぞ宜しくお願いします。

313:デフォルトの名無しさん
16/12/23 15:54:43.63 Kb3OsEli.net
目的次第だがShellProcは違うんじゃないか
explorer.exeに対してShellExecuteあたりのフックか?

314:デフォルトの名無しさん
16/12/23 15:59:09.98 5tPECy1o.net
>>305
proxy arp

315:305
16/12/23 16:14:48.81 sqLqmtwC.net
>>305, 306
レスありがとうございます。
DLL注入やアタッチのよるDNS改ざんは確かにできそうですね。
検討してみます。
ちなみに、プロセスは基本的には chrome です。

>>307
できればフィルタードライバの設計を、おおざっぱでもいいので教えて頂けませんか?
(ドライバのコーディングは、ほぼ経験が無く、ネットワークそのものの知識はあるものの、windows内部での扱いやAPIはまったく知識が無いです)
ちなみに、VPNによる仮想アダプタと、複数のネットワークカード(アダプタ)があるのですが、それでも対応可能でしょうか?
(直感的には、特定アダプタに対するフィルターだと、アダプタの優先度に左右されそう。アダプタ依存にはしたくないです)

316:デフォルトの名無しさん
16/12/23 16:17:28.56 gpKoKuI/.net
>>304
解決しました。
どうもありがとうございました。

317:デフォルトの名無しさん
16/12/23 16:45:40.87 Kb3OsEli.net
>>311
WDKサンプルのこのあたりが参考になるのかな
NDIS 6.0 Filter Driver
Windows Filtering Platform Packet Modification Sample

318:デフォルトの名無しさん
16/12/24 07:41:05.18 AXa0yhpU.net
>>313
ありがとうございます。参考にさせて頂きます。

319:デフォルトの名無しさん
16/12/24 20:58:07.38 3KzFEnUI.net
>>314
きっとおまえがやりたいことはchrome拡張でonbeforerequestいじれば解決する・・・

320:デフォルトの名無しさん
16/12/25 22:10:16.80 n7UGfNqJ.net
iniファイルから文字列を読み込むGetPrivateProfileString()なんですが、
セミコロン以下のコメント文まで読み込んでしまいます。
コメント文は読み込まないようにできないでしょうか?
それとも自分でコメント文を削除するしかないでしょうか?

321:デフォルトの名無しさん
16/12/26 00:55:07.08 cwwyPIk6.net
同一行にコメントはwindows的にアウト

322:316
16/12/26 01:06:56.36 CvSBnmkv.net
>>317
なるほど!
ありがとうございました!

323:デフォルトの名無しさん
16/12/26 08:40:18.91 I+2Q+LPS.net
コメントを勘違いしてるんじゃね?

324:デフォルトの名無しさん
16/12/26 21:20:51.81 SUV7MStA.net
セミコロン付けたらコメントになるって言うけどよー
あれ実際は特別扱いなんかしてなくて、例えば
;abc=def
にしたら「;abc」って名前になるから「abc」に一致しなくなるだけじゃないかと疑ってる

325:デフォルトの名無しさん
16/12/26 21:34:05.02 sfc5Nc1U.net
じゃあ「;abc」で試してみればよくね?

326:デフォルトの名無しさん
16/12/26 22:12:12.96 ffv778mh.net
セミコロンは行頭にある時だけを特別扱いしているみたいだ

327:316
16/12/29 11:37:53.16 E1SACFDz.net
使ってるエディタが.iniの同一行コメントもコメント色に変換してくれるので、誤解してしまいました。
気を付けます。

328:デフォルトの名無しさん
16/12/30 13:34:08.58 qor2kyvR.net
winsockの関数フックしたいんですけどインポートアドレステーブル上の
ws2_32.dllの関数だけ取得できません。どうしたら?
URLリンク(up2.cache.kouploader.jp)
このコードは
自身のロードしたDLLの関数名を列挙するだけのシンプルなものですが、
やはりwinsockの関数名だけ取得できないです。
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_IATや
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えても取得できませんでした(そもそも関数がnull返してくる

329:デフォルトの名無しさん
16/12/30 13:46:15.25 ymKNG2iV.net
WSAStartupは成功してんの?

330:デフォルトの名無しさん
16/12/30 13:47:50.05 LToUj4mC.net
名無しだからcontinueですっ飛ばしてんだろ

331:片山博文MZ ◆T6xkBnTXz7B0
16/12/30 14:07:12.37 nsN9rWIv.net
GetLastError()を調べてみよ。

332:324
16/12/30 14:41:23.26 qor2kyvR.net
>>325
成功しているようです
>>326
関数名が名無しということですか?
>>327
どのタイミングでですか?

if(IMAGE_SNAP_BY_ORDINAL(pThunkData->u1.Ordinal))
winsockの関数だけこのif文が真になります。
URLリンク(i.imgur.com)
デバッガでIAT覗くと、正しい関数名ではないが、2つの関数らしきもの?が表示されていて
これがWSAStartup()/WSACleanup()に対応するものだと思われます
他のDLLでは関数名が正しく表示されます。
これが、関数名が名無しということならどう対処するのかご教示頂きたいです。
海外のフォーラムの似たような質問では
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えて成功したと書かれていたんですけどね、成功しませんでした。

333:デフォルトの名無しさん
16/12/30 15:38:47.57 LToUj4mC.net
>>328
関数名は名前あるけど、インポートが名無し

334:デフォルトの名無しさん
16/12/30 15:39:26.81 Q3tvxZdg.net
マクロというオチ

335:デフォルトの名無しさん
16/12/30 15:40:45.50 LToUj4mC.net
対処は名前比較じゃなくてアドレス比較

336:デフォルトの名無しさん
16/12/30 19:08:50.21 qor2kyvR.net
>>331
ヒントありがとうございました。解決しました
PIMAGE_THUNK_DATA pThunkData = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->OriginalFirstThunk);
PIMAGE_THUNK_DATA pRealThunk = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->FirstThunk);
while(pThunkData->u1.Function){
FARPROC pfnImportedFunc = (FARPROC)(pRealThunk->u1.Function);
・・・
上記のIAT上の関数アドレスと、
LoadLibrary()&GetProcAddress()で取得したwinsock関数のアドレス
を比較し一致したものを書き換えたら成功しました。
URLリンク(blog.techlab-xe.net)
これそもそも
文字列比較より
アドレス比較を用いる方法のほうが正確なやりかたですよね?

337:デフォルトの名無しさん
17/01/21 17:55:42.90 0py1wTB0.net
CreateProcess関数の質問です。この関数で開いた外部プロセスを、操作しようとしたらハンドルされていない例外エラー発生したことある人いますか?
エラーメッセの
オブジェクト参照がオブジェクトインスタンスに設定されていませんの意味もいまいちわからずです。悩んでいます。
どなたかヒントをくれたら幸いですm(__)m

338:デフォルトの名無しさん
17/01/21 18:11:33.93 3w6w5xSi.net
たぶんCreateProcessの問題じゃなくてソースコードの問題
基本的なとこをどっか間違えてると思う

339:デフォルトの名無しさん
17/01/21 19:16:05.15 RjpRPNfA.net
前後のソース載せてみて

340:デフォルトの名無しさん
17/01/21 20:46:43.34 1cIKmUbZ.net
>>333
まずは使ってるプログラム言語から書こうか

341:デフォルトの名無しさん
17/01/21 23:19:24.15 0py1wTB0.net
>>335
>>336
HWND hwnd;
STARTUPINFO si;
BOOL boRet = 0;
DWORD dwRet = 0;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&piMplab, sizeof(piMplab));
si.cb=sizeof(si);
GetStartupInfo(&si);
boRet = CreateProcess(_T(""C:\Program Files (x86)\Microchip\PICkit 3 v3\"Pickit3.exe"),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&piMplab);
CloseHandle(piMplab.hThread);
CloseHandle(piMplab.hProcess);
すみませんこんな感じですm(__)m↑

342:デフォルトの名無しさん
17/01/21 23:24:44.47 3w6w5xSi.net
>>337
それ以外の部分、もしくは書くために変えた部分に問題があると思う

343:デフォルトの名無しさん
17/01/21 23:31:13.18 /qDbjX4N.net
アクセス権か

344:デフォルトの名無しさん
17/01/21 23:55:07.37 1cIKmUbZ.net
>>337
まずは CreatepProcess の戻り値とエラーなら GetLastError の値を確認しようか

345:デフォルトの名無しさん
17/01/22 06:55:36.39 JOxquhah.net
_Tの中は本当にそれでいいのか

346:デフォルトの名無しさん
17/01/22 06:58:42.28 w4vCkWXB.net
\はここに貼り付けたから崩れたのか
元のソースが1個なのか

347:デフォルトの名無しさん
17/01/22 11:15:36.01 nyEfU5To.net
>>333
なんか.NETのエラーメッセージっぽいけど、.NETから呼び出しているの?
該当部分のソースを全部貼り付けなきゃ誰もわからないでしょ。

348:デフォルトの名無しさん
17/01/23 08:44:04.99 As9ZYPu9.net
そもそもどっちのプロセスがエラーを出してるかすら把握できてなさそう
子プロセス呼び出しはなんとなくコピペで扱うには荷が重い

349:デフォルトの名無しさん
17/01/25 06:02:27.98 s4b0iZxC.net
プロセスを起動して、ユーザーの入力に応答しているか確認するにはどうしたらいいでしょうか。
Process::Responding プロパティ以外の方法でお願いします。
うちの開発環境にはないので。
プロセスのウインドウを取得して、メッセージを送るくらいしか思いつかないのですが、ウィンドウがない可能性もあるし
もっとスマートな方法があればいいなと。

350:デフォルトの名無しさん
17/01/25 07:20:09.51 fntd/u0o.net
>>345
> ユーザーの入力に応答している
をきちんと定義しないと無理でしょ

351:デフォルトの名無しさん
17/01/25 09:04:47.86 paQpH1yu.net
ネットワークプログラミングで言う所のキープアライブ的なのを実装じゃあかんの?

352:デフォルトの名無しさん
17/01/25 10:50:26.10 SLV8VPLP.net
>>345
WM_PAINT系のメッセージを投げて
クライアント領域が書き換わってるかどうかとか
show/hideメッセージ送って反応するかどうか見るとか

353:デフォルトの名無しさん
17/01/25 10:51:21.94 SLV8VPLP.net
>ウィンドウがない可能性
プロセスId見て稼働率調べるかな

354:デフォルトの名無しさん
17/01/25 10:51:49.68 SLV8VPLP.net
ああ無限ループで稼働率100%だとだめなのか

355:デフォルトの名無しさん
17/01/25 12:52:29.97 uJriqNlz.net
WaitForInputIdle

356:デフォルトの名無しさん
17/02/02 12:01:31.08 386srHJg.net
TrayNotifyWndにアプリアイコンを追加と削除をしたいのですが、どうすればよいでしょうか?
Shell_NotifyIconの登録みたいなやつです。
Shell_NotifyIconの登録と削除右派知っています。

357:デフォルトの名無しさん
17/02/02 12:17:03.67 Nq0thOwX.net
Shell_NotifyIconでないならこれのことかな
URLリンク(msdn.microsoft.com)(v=vs.85).aspx

358:デフォルトの名無しさん
17/02/02 13:37:19.22 386srHJg.net
>>353
情報ありがとうございます。やりたい内容と、ちょっと違います。
windows8.1/10とかだと、タスクバーが上か下にあるとき、タスクトレイの右側か左側にTrayNotifyWndに
[IME]、[タッチパネル向けのキーボード]、[通知]などが表示されていますよね?
それらの場所に、自作のアプリアイコンを作りたいのです。
スパイでみると、
通知 ハンドル 001016E キャプション 通知センター クラス TrayButton
キーボード ハンドル 0010172 キャプション タッチキーボード クラス TIPBand
IME ハンドル 0010156 キャプション 無し クラス Button
となっています。
親ハンドルからたどってクラスを見るとTrayNotifyWndとなっています。
知りたいのは、SHAppBarMessageを使ったタスクバーみたいなウインドウではありません。

359:デフォルトの名無しさん
17/02/02 13:49:49.54 386srHJg.net
googleの画像検索で googleimeとかってやると下のような画面がでますよね?
URLリンク(www.google.co.jp)
TrayNotifyWndでにて、設定メニュをいじっているような画面のようなプログラムを作りたいのです。

360:デフォルトの名無しさん
17/02/02 13:52:18.95 89UtyOev.net
Shell_NotifyIconで登録して、クリックされたらメニュー表示すればそれになる

361:デフォルトの名無しさん
17/02/02 14:17:43.87 386srHJg.net
>>356
一般的な、Shell_NotifyIconでタスクトレイの登録ではないです。
タスクトレイの横に登録する手続きが知りたいのです。
mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。
comクラスとかでTrayNotifyWndに追加するような機能があるのかなぁ。。

362:デフォルトの名無しさん
17/02/02 14:36:09.97 89UtyOev.net
すまん。通知領域はその右側か盲目だった
直接CreateWindowでぶらさげちゃうとかできないかな

363:デフォルトの名無しさん
17/02/02 15:53:49.61 8dKrrq5G.net
IMEツールバーみたいにタスクトレイにドッキングしたいってこと?

364:デフォルトの名無しさん
17/02/02 16:11:08.48 386srHJg.net
>>359
機能はIMEではないですが、そんなかんじです。

365:デフォルトの名無しさん
17/02/02 18:11:54.04 gbCpBU15.net
TrayNotifyWndを親にしてCreateToolbarExで作ればいいんじゃないのかな

366:デフォルトの名無しさん
17/02/02 19:12:40.06 qO0hDPsp.net
>>357
> mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。
ならそのソースを読めばいいんじゃね?

367:デフォルトの名無しさん
17/02/02 20:07:51.95 Eu4e1EaI.net
>>362
多分ソースは言語バーのcomクラス呼び出しだけで、実際の実装はWindows側

368:デフォルトの名無しさん
17/02/02 23:04:33.49 386srHJg.net
>>363
ざっくり調べたところ、おっしゃる通り言語バーのcom呼び出してるだけっぽかったです。
>>361
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
hButton = CreateWindowEx(0,L"button",L"@",WS_CHILD | WS_VISIBLE,0,0,48,24,hTrayNotify,0,hInst,0);
一瞬ボタンが表示されて消えましたw
登録のさせ方がたぶん違いますよね。
TBBUTTON tbButton = { 0 , 0 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 };
SendMessage(hTrayNotify, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
なにも起こらず。。orz

369:デフォルトの名無しさん
17/02/02 23:11:43.26 386srHJg.net
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
だと、タスクトレイの内部に描画されてました。
やりたいことと違う;;

370:デフォルトの名無しさん
17/02/03 01:27:36.38 3xPmzf3n.net
>>364
親側をsubclassしてボタン用のエリア常に用意してないからじゃない?

371:デフォルトの名無しさん
17/02/03 09:17:19.56 pF10NEzN.net
>>364
TrayNotifyWndが、もしツールバーのクラスを内部で保持してたら登録できるかなーと思いついての実験でした。。
ウインドクラスTrayNotifyWndにそんな機能はなかった。うまくいかないものですね。

372:デフォルトの名無しさん
17/02/03 09:34:28.94 pF10NEzN.net
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
HWND hToolbarWindow32 = FindWindowEx(hTrayNotify, NULL, L"ToolbarWindow32", NULL);
printf("handle %p %p %p ", hTaskBar, hTrayNotify, hToolbarWindow32);
SendMessage(hToolbarWindow32, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
実験してだめだったコード。。こんな感じでした。ウインドハンドルは普通に取得は成功していたみたいなんですけどね~

373:デフォルトの名無しさん
17/02/03 11:42:55.01 mwiWK7Ca.net
指定したソフトが生きてるかフリーズしてるかを判断できるAPI教えてくださいよ

374:デフォルトの名無しさん
17/02/03 12:11:25.19 oHw8NUL1.net
メッセージ投げて帰ってくるかどうか

375:デフォルトの名無しさん
17/02/03 13:01:49.10 3xPmzf3n.net
>>368
>>364の上のコードでいいでしょ。あとはボタン用の領域作るだけでいけるよ
URLリンク(i.imgur.com)

376:デフォルトの名無しさん
17/02/03 14:07:18.26 pF10NEzN.net
>>371
その画像だと、ウインドウが、タスクトレイの位置にありませんか?
タスクトレイの内部にアプリアイコンを作るのであれば、Shell_NotifyIconで登録すればいいだけです。
やりたいのは、その画像でいうと、時計の右横の通知領域の右にウインド領域を追加したいのです。

377:デフォルトの名無しさん
17/02/03 14:11:00.00 mwiWK7Ca.net
>>370
それだと帰ってこなかったら出した側も固まりませんか?

378:デフォルトの名無しさん
17/02/03 14:13:38.31 oHw8NUL1.net
>>373
別スレッドからメッセージ投げて、メインでスレッド監視して待機時間オーバーしたかどうかで判定するとか

379:デフォルトの名無しさん
17/02/03 14:20:41.69 mwiWK7Ca.net
>>374
なるほど。
メッセージ投げてから返答が帰るまでの待ち時間で判断するって事ですね。
ありがとうございます。さっそくやってみます。

380:デフォルトの名無しさん
17/02/03 14:22:20.52 3xPmzf3n.net
>>372
タスクトレイの左側にある隠れたアイコンを表示するための ^ ボタンの上に作ったボタンが表示されてる
ウインドウ表示位置だけの問題で期待してる通りだと思うよ
URLリンク(i.imgur.com)
>>373
無限ループで処理してるかもしれないから、生き死にの定義による

381:デフォルトの名無しさん
17/02/03 14:39:36.19 Q4UhsfCm.net
>>375
IsHungAppWindow

382:デフォルトの名無しさん
17/02/03 15:40:26.62 mwiWK7Ca.net
>>376
今ターゲットソフトをwhile(1)で固めて
監視ソフトでPostMessageやGetWindowRectをしたら正常に帰ってきました。
while(1)だとウィンドウの移動もできたのでこれは死亡にはならないですね
>>377
そんなのあったのですね、ありがとうございます試してみます

383:デフォルトの名無しさん
17/02/03 17:34:15.41 Q4UhsfCm.net
>>378
PostMessageは相手の処理を待たないから当然。
GetWindowRectも相手のプロセスが情報を返すわけじゃないから当然。
その方法を試すならSendMessage。
>while(1)だとウィンドウの移動もできたので
コンパイラの最適化によって(無意味な)無限ループが消されているかも。

384:デフォルトの名無しさん
17/02/03 18:01:24.26 Q4UhsfCm.net
あと参考までに
SendMessageTimeout
URLリンク(msdn.microsoft.com)

385:デフォルトの名無しさん
17/02/03 18:07:05.86 mwiWK7Ca.net
>>379
失礼、PostMessageじゃなくてSendMessageでした。
while(1)はウィンドウは動かせますがフォーム自体は固まった状態でした(マウスカーソルがくるくるになります)
IsHungAppWindowで指定間隔で数回みて連続でTRUEなら落ちてると判断できそうな感じでした
しかしwhile(1)ではなく実際にどこかのDLL関数内で落ちてる場合とかにFindWindowでハンドルは取れるのでしょうか?

386:デフォルトの名無しさん
17/02/03 18:08:21.50 mwiWK7Ca.net
>>380
こんな関数あったんですね・・・
これは良い情報を頂きましたありがとうございます

387:デフォルトの名無しさん
17/02/04 13:09:50.99 koQjiQcQ.net
メッセージ投げといてタイムアウトしたらあとは知らないって
まるで鍵垢へのフォロリクか2ちゃんの独り言のようだ

388:デフォルトの名無しさん
17/02/04 13:21:18.26 cCtqcbdk.net
ピンポーン 宅配便でーす お留守ですかー ピンポーン ピンポーン

389:デフォルトの名無しさん
17/02/04 15:21:09.56 e9aNESBj.net
帰りに台車を放り投げて荷物を蹴とばすんですね判ります

390:デフォルトの名無しさん
17/02/05 11:14:06.81 bZw/U4Ow.net
使い道が想像できない

391:デフォルトの名無しさん
17/02/05 19:54:32.92 ajRW1B46.net
GetWindowRectで得た値から計算して
MoveWindowに使うとズレるんですがこれは仕様なんですか?
例えばGetWindowRectで
left=100  right=200
top=100  bottom=200
だったとして、これだと幅と高さが
101になるので
MoveWindow(hwnd,100,100,101,101,TRUE)
としたら幅と高さが1ドットずつ膨らんでしまいます

392:デフォルトの名無しさん
17/02/05 19:59:38.66 lBwes1rb.net
WindowsAPIのRect系は右と下の1ドットは含まれないはずだったが

393:デフォルトの名無しさん
17/02/05 20:00:15.60 Kv3SwlRy.net
ピクセルの左上の隙間の位置を返す仕様(Javaと同じ)
なので単純に差を出して指定しないと膨らむ

394:デフォルトの名無しさん
17/02/05 20:02:41.46 wagcFIA6.net
>>387
画面DPI100%以外になってない?vista以降はそれ原因で従来のAPIの扱いが面倒になってる

395:デフォルトの名無しさん
17/02/05 20:05:12.27 ajRW1B46.net
MSDNを見ると
GetClientRectはleftとtopが常に0で
rightとbottomには幅と高さが入ってくると書かれていて
事実その通りになっていますが
GetWindowRectのほうは
ウインドウの左上座標と右下座標と表記されてるので
right-left+1 が幅になるはずです
なのでこの仕様はおかしいと思います

396:デフォルトの名無しさん
17/02/05 20:08:48.13 DkYFBwwC.net
>>391
英語版みたらちゃんと書いてあったよ
ていうかこの関数に限らず
Rect構造体の定義としてbottomとrightは1ピクセル外側を示すことになってる

397:デフォルトの名無しさん
17/02/05 20:19:29.52 ajRW1B46.net
オセロでなく碁盤で数えろってことですね
納得しました

398:デフォルトの名無しさん
17/02/06 11:44:22.96 atuXlQHb.net
>>392この辺ちゃんと理解してないと1ドット足りないみたいな事態になるんだよな
VBerとか1オリジンでUboundとか慣れてるとドはまりしそう

399:デフォルトの名無しさん
17/02/06 15:30:39.87 sNAkUIYE.net
>>391
GetClientRectの話だけど
left=top=0だとして
right=bottom=1だったら
幅と高さは1で
ウィンドウは(0,0)-(0,0)で1ピクセルのウィンドウだから
やっぱり幅と高さは1だし矛盾しない

400:デフォルトの名無しさん
17/02/06 16:17:17.14 atuXlQHb.net
画像の部分クリップとかやりだすとちょっと混乱したりする教訓か
ドトネトなんかではx y width heightなプロパティを別に持っている

401:デフォルトの名無しさん
17/02/06 17:51:48.08 2YUAIh/k.net
SetWindowPosとMoveWindowとで
ウィンドウを動かした時に何か違いはあるんでしょうか?
SetWindowPosでウィンドウは動かせるのに
MoveWindowは何のために用意されてるんですか?

402:片山博文MZ ◆T6xkBnTXz7B0
17/02/06 18:06:24.84 myCEQNc2.net
>>397
SetWindowPosの方がフラグ指定や挿入位置指定など、できることが多い。

403:デフォルトの名無しさん
17/02/07 08:29:41.33 g0+JjgLn.net
>>398
ではMoveWindowは何のために存在しているの

404:デフォルトの名無しさん
17/02/07 09:23:30.46 mtDQmVBr.net
フラグとか触らないでただ動かす時のため

405:デフォルトの名無しさん
17/02/07 11:23:40.44 IHNU1ydF.net
昔のことは知らないけど SetWindowPos が後から追加されたんじゃないの

406:デフォルトの名無しさん
17/02/07 11:40:48.78 +LdvU0fQ.net
理由も昔のことも知らないけど 今はMoveWindowの内部でSetWindowPosが呼ばれてたと思う

407:デフォルトの名無しさん
17/02/07 15:19:54.85 LuCsRke8.net
後方互換性のため

408:デフォルトの名無しさん
17/02/07 22:51:17.46 m2J0GXa0.net
DeferWindowPos

409:デフォルトの名無しさん
17/02/17 18:42:29.90 xKxGFEhy.net
実行ファイルの埋め込みマニフェストの実体をいじらずに
内容を修正した上で起動したり、任意の外部マニフェストファイルを読めるように
操作できませんか?
具体的には、マニフェストのcompatibilityの項目なんですが。。。

410:デフォルトの名無しさん
17/02/17 19:08:12.47 yGnzX63H.net
OSのバージョンにより異なる
URLリンク(msdn.microsoft.com)
URLリンク(www.taosoftware.co.jp)
URLリンク(nekojiru.blog.so-net.ne.jp)

411:デフォルトの名無しさん
17/02/17 19:35:32.23 xKxGFEhy.net
Windows7以降は埋め込み優先で、
実行ファイルのマニフェスト自身を書き換える方法、レジストリでOS自体の設定をいじる方法、
ActivateActCtx()でcommctl.dllは変更できるっぽい?
ってのはわかったんですが、個別に実行ファイルをいじらずに操作する方法があるかな、と思った次第です。

412:デフォルトの名無しさん
17/02/17 19:51:35.09 Z3/lG4/1.net
ショートカット作って、そのプロパティにアクセスして、互換性編集して、そのショートカットで起動させるとか?

413:デフォルトの名無しさん
17/03/01 19:41:47.62 GhHUeiw5.net
windows8.1/10 マルチモニター環境で、ウインドウの位置がタッチパネルデバイスを
有するモニターであるかを調べたい場合どうすればよいですか?
HMONITOR hMonitor = MonitorFromWindow(hWnd,MONITOR_DEFAULTTONEAREST);
これで、モニターのハンドルは調べられるのですが、
このモニターがタッチパネルを有するモニターを調べる場合どうすればいいかわかりません。

414:デフォルトの名無しさん
17/03/01 19:53:26.09 IeB4TnBd.net
Win32_PointingDeviceあたりだろうな

415:デフォルトの名無しさん
17/03/02 16:15:18.67 35Ccu8m+.net
Win32 Pointhig Device軽く調べたんですが、それっぽいのないですね;;

416:デフォルトの名無しさん
17/03/02 16:33:06.48 j0RdOmJS.net
それでタッチかどうかわかるでしょ
あとはWin32_VideoController、Win32_DesktopMonitor、GetMonitorInfoあたりと情報突き合わせたら
その座標がタッチ対応かわかる

417:デフォルトの名無しさん
17/03/02 17:34:40.28 HWkXh2UP.net
応用がきくプログラマーを目指せ

418:デフォルトの名無しさん
17/03/02 19:31:01.50 ZV5SMkF2.net
ここさわって
っていううメッセージを描いておく

419:デフォルトの名無しさん
17/03/02 20:19:05.81 HWkXh2UP.net
俺ならそのメッセージでもマウス操作しかしなさそうだわw

420:デフォルトの名無しさん
17/03/02 21:11:15.50 35Ccu8m+.net
ユーザー側に、全てのモニターをタッチさせて、有効無効を設定してくれとダイアログだろうかと思いましたが、
プライマリーモニターかどうかを調べるのは簡単だったので、プライマリーモニターのみ対応にしたほうが混乱ないかなーと思いました。

421:デフォルトの名無しさん
17/03/02 21:14:09.87 35Ccu8m+.net
ユーザー側に、全てのモニターをタッチさせて、有効無効を設定してくれと、ダイアログを出そうかと思いましたが、
プライマリーモニターかどうかを調べるのは簡単だったので、プライマリーモニターのみ対応にしたほうが混乱ないかなーと思いました。

422:デフォルトの名無しさん
17/03/03 12:32:15.32 IUFykjWp.net
Windowsじゃ何やっても無駄ですよ。
生産性はないです。
まともにタブで操作すると考え方をタブに合わせて全体を設計し直さないとダメでです。
ポインターの概念を画像で処理する必要ががります。
マルチで接触してる部分の個々の中心点を求めて
接触している部分にボタンの候補があるかどうか
そういう処理を行わないとだめ
Windowsが使えないのは、ポインティングデバイスから無理に
座標変換してるので誤操作と誤作動だらけになる。
マイクロソフトにはこの分野は作れないと思いますよ。

423:デフォルトの名無しさん
17/03/03 12:56:20.62 Loi48FLt.net



424:力なんていう低レベルからシェア捕れる可能性を秘めてる 集金システムもまともなのがないからそこもね ハードからソフトまでガチガチなiphoneやandroidと違ってビジネスチャンスに溢れた自由なOS。それがWindows



425:デフォルトの名無しさん
17/03/03 16:55:05.95 7kccr9GO.net
>>418
窓板に何年も毎日貼り付いてるキチガイタイポマカーのコピペじゃねえかw

426:デフォルトの名無しさん
17/03/04 13:10:48.65 aE/wnzST.net
どんなに優れていても誰にも使われなければ意味が無い。

427:デフォルトの名無しさん
17/03/04 13:24:45.44 il8vJgV1.net
使われてるやん
って言ったら使ってる奴がアホってか?

428:デフォルトの名無しさん
17/03/04 14:25:59.12 GRvQ2lmz.net
シェア獲得率と優劣は比例しない

429:デフォルトの名無しさん
17/03/04 14:32:38.90 svzWwCAT.net
そう言っておかないとシェア4%のMacなんか何の立場もないもんな

430:デフォルトの名無しさん
17/03/04 14:46:44.82 nGVyMKq0.net
シェア獲得率が高いものは、シェアに優れてる

431:デフォルトの名無しさん
17/03/04 15:10:40.29 aE/wnzST.net
別に使われてると思ってるなら良いんでない?
俺は趣味でもあり金を稼ぐ道具でもあるからMacなんて使わんけど。
だいたい、知らんもんで金は稼げない。

432:デフォルトの名無しさん
17/03/04 18:17:19.42 ZJLt6oM8.net
MacをPCだとするとシェア4%になるが
DTMコンソールやCG用レンダラーだとするとシェアが何倍にもなる不思議

433:デフォルトの名無しさん
17/03/05 13:07:20.68 Fl7T0tas.net
>>419
でも優良見込み客を囲い込んでるのは i & a なんだよなぁ

434:デフォルトの名無しさん
17/03/05 13:41:54.91 1JomNGIg.net
>>427
2015年での世界におけるAppleのシェアは7.5%だそうです。
URLリンク(ascii.jp)

435:デフォルトの名無しさん
17/03/05 14:27:40.01 zkc5hO4d.net
ベンダー出荷シェアとかOSの販売数ってのは利用率なシェアとは別モンだからな

436:デフォルトの名無しさん
17/03/05 17:20:05.73 KDLljhIv.net
光学ドライブのAutoRunを無効にしてると、ディスクを入れ替えたことに気付けないみたいですが、
どうやったらディスクの情報をリフレッシュさせることができるのでしょうか?
ディレクトリ一覧を取得しようとしても、入れ替え前のディスクのディレクトリが出てきて困ってます

437:デフォルトの名無しさん
17/03/05 19:16:54.98 zkc5hO4d.net
今のOSはAutoRun最初から無効だから、それが本当ならほとんどのPCでまともに取得できないってことになるな
ソースどっかミスってるんでしょ

438:デフォルトの名無しさん
17/03/05 19:23:58.07 91bxBwXE.net
もちろんエクスプローラーで開けば情報は更新されます。プログラムからトレイを開閉しても情報は更新されます。
光学ドライブのボタンで開閉すると、情報が更新されないままなのです。

439:デフォルトの名無しさん
17/03/05 19:45:45.34 1JomNGIg.net
>>431
この辺、参考にならないかな
URLリンク(support.microsoft.com)

440:デフォルトの名無しさん
17/03/10 01:12:03.58 5qliBH2Z.net
URLリンク(ideone.com)
Win32API勉強中なんですが、ウィンドウを作ることができません、hWndがNULLになってしまって途中で終わってしまいます
ウィンドウクラスの登録も失敗していないみたいなので原因がわかりません、どこが悪いのか教えてください

441:デフォルトの名無しさん
17/03/10 03:42:45.84 Vp9TD86Z.net
自分のウインドのZオーダーが変化したタイミングを調べたいのですが、
ウインドメッセージでなにかありましたっけ?

442:デフォルトの名無しさん
17/03/10 03:48:47.30 G57q42um.net
>>435
× defalut
〇 default
>>436
WM_WINDOWPOSCHANGEDかな

443:デフォルトの名無しさん
17/03/10 04:07:50.94 Vp9TD86Z.net
WM_WINDOWPOSCHANGEDは、だめでした。
ちなみにウインドウはCreateWindowExで、WS_EX_TOPMOSTしています。
ウインドウのスタートメニューが重なっと時にそれよりも前面に表示したいのですが。。
WM_WINDOWPOSCHANGEDにメッセージ来てないっぽいです。
今は、代案として1秒ごとに、SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);を入れているのですが、
もっといい方法ないでしょうか?
いま、GetWindowあたり調べているのですが、GetWindow(hWnd, GW_HWNDPREV);だと
imeのハンドルが取れるっぽいのでなんか違う。。orz

444:デフォルトの名無しさん
17/03/10 05:09:47.00 j91K0HTy.net
ランサムウェアですねわかります

445:デフォルトの名無しさん
17/03/10 05:17:14.60 Vp9TD86Z.net
>>439
悪さするアプリじゃないんだが?

446:デフォルトの名無しさん
17/03/10 07:10:36.82 n8W4k0Sb.net
異教徒の大量虐殺をためらわない一神教の思想性を理解するのに役立つ。
いずれ日本がアメリカに復讐する日が来るだろう。

447:デフォルトの名無しさん
17/03/10 07:13:07.30 n8W4k0Sb.net
>>441 誤爆失礼

448:デフォルトの名無しさん
17/03/10 08:47:49.51 Lkoti1g0.net
>>440
昔からこういう奴はいるから気にするな

449:デフォルトの名無しさん
17/03/10 14:11:40.65 wwCDmvkp.net
図星ですねわかります

450:片山博文MZ ◆T6xkBnTXz7B0
17/03/10 14:29:16.92 iyjWrKHK.net
NG: (HBRUSH)COLOR_BACKGROUND
OK: (HBRUSH)(COLOR_3DFACE + 1)
ShowWindow(hWnd, SW_SHOW);の後にUpdateWindow(hWnd);がない。

451:片山博文MZ ◆T6xkBnTXz7B0
17/03/10 14:30:21.93 iyjWrKHK.net
ShowWindow(hWnd, SW_SHOW);
じゃなくて、ShowWindow(hWnd, nCmdShow);
かShowWindow(hWnd, SW_SHOWNORMAL);にしろ。

452:デフォルトの名無しさん
17/03/10 14:40:49.87 ALHJU+Fn.net
>>437
ありがとうございますこれでいけました

453:デフォルトの名無しさん
17/03/10 16:29:28.86 ALHJU+Fn.net
すいませんまた質問させてください
テトリスを作る動画を見ながらこれを作っているのですが、リソースの画像を一度表示されたんですが、画像のサイズが変だったので訂正したところ表示されなくなりました
どこが悪いのか教えて頂けないでしょうか?
URLリンク(ideone.com)

454:デフォルトの名無しさん
17/03/10 17:21:39.95 wwCDmvkp.net
r.right = 24 * 10;
r.bottom = 24 * 20;

455:デフォルトの名無しさん
17/03/12 21:56:50.24 EdU52Ynw.net
タスクトレイのShell_NotifyIcon();について質問です。
タスクトレイのアイコンサイズは32x32または16x16が一般的っぽいのですが、
64x32などの長方形サイズなどのカスタムアイコンを設定できるのでしょうか?
icdata.dwInfoFlagsで NIIF_LARGE_ICONっていうパラメーターを設定したのですが、
反映されていないっぽいです。
case WM_CREATE:
{
ZeroMemory(&icdata, sizeof(icdata));
hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
icdata.cbSize = sizeof(NOTIFYICONDATA);
icdata.hWnd = hWnd; icdata.uID = 0;
icdata.uFlags = NIF_MESSAGE | NIF_TIP | NIF_SHOWTIP | NIF_ICON;
icdata.dwInfoFlags = NI


456:IF_LARGE_ICON; icdata.uCallbackMessage = WM_USER; icdata.uVersion = NOTIFYICON_VERSION_4; icdata.hIcon = hIcon; wcscpy_s(icdata.szTip, sizeof(icdata.szTip), L"左クリックで終了"); Shell_NotifyIcon(NIM_ADD, &icdata); }



457:450
17/03/12 22:56:10.20 EdU52Ynw.net
LoadIconは、LoadIconMetricでした。
HRESULT hr = LoadIconMetric(hInst, MAKEINTRESOURCE(IDI_ICON1), LIM_LARGE, &hIcon);
しかし、変化なし。。

458:デフォルトの名無しさん
17/03/13 06:26:15.42 cVbgmuk1.net
右クリックとかでよく出るポップアップメニューの
フォントの大きさを変更したい場合どうすればよいですか?
case WM_RBUTTONDOWN:
{
POINT pt;
pt.x = LOWORD(lParam);pt.y = HIWORD(lParam);
ClientToScreen(hWnd, &pt);
TrackPopupMenu(hMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
}
break;

459:デフォルトの名無しさん
17/03/13 06:47:05.65 cVbgmuk1.net
自己解決。。調べたら、メニュー・オーナードローについて詳しいページが出てきました。

460:デフォルトの名無しさん
17/03/13 08:55:13.87 hLVIfrQc.net
紀平さんのか

461:片山博文MZ ◆T6xkBnTXz7B0
17/03/13 13:01:19.28 VNPYsRzK.net
>>450
shell icon sizeで画一的に決まってる。

462:デフォルトの名無しさん
17/03/13 13:43:30.21 N3DmujAP.net
>>450
オーナードロー

463:デフォルトの名無しさん
17/03/13 13:49:46.45 wbj+4uLG.net
>>456
それだけじゃ答えから遠い

464:デフォルトの名無しさん
17/03/13 17:27:27.81 RCZql05q.net
>>449
違うみたいです・・・

465:デフォルトの名無しさん
17/03/13 20:18:35.18 DGoKmeFN.net
URLリンク(ideone.com)
VC++で見ているんですが24行目のhBitmapにはちゃんとアドレスが確保されているのになぜか描画されません
どういった原因が考えられるでしょうか?

466:片山博文MZ ◆T6xkBnTXz7B0
17/03/13 20:24:18.16 VNPYsRzK.net
>>459
SelectObjectは、BeginPaintの後に呼ばないといけない。HDCが違う。

467:デフォルトの名無しさん
17/03/13 23:00:39.35 cCiuixm4.net
>>459
コンパイルして実行してみたけど表示されたよ。bmpファイルがおかしいんじゃない?
あとWM_DESTROYでhMemDCとhBlockDCをDeleteObjectしてるけどDeleteDCじゃないとダメ

468:デフォルトの名無しさん
17/03/14 10:21:04.36 vbV/Jpv3.net
>>459
テトリスのひとか
がんがれ

469:459
17/03/14 23:58:45.78 MclzPbbI.net
環境も書いたほうがいいですね、Win7 x64でVC++2010 Expressです、rcファイル作って「BLOCKS BITMAP "block.bmp"」と書いてます
ファイル名は間違えていないですし、リンクしてoファイルは作っていないですけど間違っていますか?
最初は自作のbmpファイルでやっていたんですけど、途中から作られたbmpファイルでやろうとして表示されなくなりました
ここにあるblock.bmpというやつです
URLリンク(github.com)
動画を見てロジックを理解しながら学習したいのですが、なかなか捗らないです
>>460
ごめんなさい、何行目のことかわからないです
>>461
修正しました!
>>462
ありがとうございます

470:デフォルトの名無しさん
17/03/15 12:08:58.48 7YWEdixI.net
馬鹿には無理

471:デフォルトの名無しさん
17/03/15 12:54:33.61 rPK+nkkO.net
用意されてたbmpでは動く。自作bmpでは動かない。ってことかよ。だとしたら原因ひとつじゃん

472:デフォルトの名無しさん
17/03/15 13:11:54.57 h6gBY/+f.net
>>463
imgurにでも自分で作ったbmp上げてみてよ

473:デフォルトの名無しさん
17/03/15 13:37:27.01 7YWEdixI.net
imgurって内容変わるんじゃね

474:デフォルトの名無しさん
17/03/15 13:42:29.19 h6gBY/+f.net
マジかごめん

475:デフォルトの名無しさん
17/03/15 16:58:13.14 0QbqsbzH.net
>>463
たぶん表示されてるんだと思う
WM_CREATE内の//debugの下の行を
BitBlt(hMemDC, 0, 0, 24, 24, hBlockDC, 0, 24, SRCCOPY);
にするとどうなる?

476:デフォルトの名無しさん
17/03/15 18:59:14.47 Jw8FgjFy.net
ちょっと見てみたよ
bmpのIDだけど、BLOCKS と "BLOCKS" は別だからね
BLOCKSは数値に置き換えられてるけどLoadBitmapは文字列の"BLOCKS"で読もうとしてる
初心者の頃はやりがちなやつだな

477:デフォルトの名無しさん
17/03/15 20:15:49.77 5s+i++Yx.net
>>469
ありがとうございます、これで表示されました
でもURLリンク(dqn.sakusakutto.jp)この動画とは別の画像が表示されます
動画上では灰色ブロックが出てきているのに、自分の環境では赤色のブロックが出てきている状況です
>>470
動画では「"BLOCKS"」と定義されていたので自分は「TEXT("BLOCKS")」と定義したんですが両者は違うものなのでしょうか?

478:デフォルトの名無しさん
17/03/15 20:16:40.91 LU+w+iAT.net
rcの方だろ

479:デフォルトの名無しさん
17/03/15 21:50:38.03 5BC7GJpQ.net
USBメモリなどUSB機器の接続検知をおこないたいのですが、WM_DEVICECHANGEを使用すると
URLリンク(qanda.rakuten.ne.jp)
のようにUSBメモリによってはDBT_DEVICEARRIVALが何度か来てしまいます。
↑のQ&Aにあるように、正常に認識されたときを検出するにはどうすればよいでしょうか?

480:デフォルトの名無しさん
17/03/15 23:07:40.31 5s+i++Yx.net
>>472
rcのほうが間違えているということですか?
では「"BLOCKS" BITMAP "block.bmp"」ってことですか?

481:デフォルトの名無しさん
17/03/16 09:34:05.83 fy4K8iiJ.net
こうやって手取り足取りな奴はイライラする

482:デフォルトの名無しさん
17/03/16 11:58:27.68 bBZQNLcb.net
>>475
じゃあ来なければいいよ

483:デフォルトの名無しさん
17/03/16 15:14:09.34 Oq2mLnGK.net
お前が手足を完全にもいでトドメを刺せばいい

484:デフォルトの名無しさん
17/03/16 17:17:19.21 Xe646fvV.net
モイっ!

485:デフォルトの名無しさん
17/03/16 22:29:13.60 xw1bzJ/c.net
>>473
((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype が全部同じなの?

486:デフォルトの名無しさん
17/03/19 01:08:24.24 bawtCMkE.net
SHAppBarMessage(ABM_QUERYPOS, &abd);が正しい値を取得できない場合どうすればいいですか?
Windows10の設定:システム:ディスプレイ:ディプレイカスタマイズ画面
テキスト、アプリ、その他の項目サイズを変更する
で100%から175%までいろいろ変化させてみると表示位置のずれが発生します。

487:デフォルトの名無しさん
17/03/19 04:28:36.19 yhAiVzME.net
>>473
デバイスイベントが来たら、タイマーで少し時間が経ってからデバイスをチェックする。
時間が経つ前に次のデバイスイベントが来たら、タイマーをセットしなおしてまた少し時間が経つまで待つ。

488:デフォルトの名無しさん
17/03/20 10:38:14.59 px9bK4BM.net
タスクトレイの自動的に隠すになっているかを調べる場合どうすればよいですか?

489:デフォルトの名無しさん
17/03/20 11:02:11.90 OlmnVrTw.net
レジストリでも見ればわかるんじゃない?

490:482
17/03/20 11:03:48.79 px9bK4BM.net
自己解決・・
APPBARDATA appbardata;
appbardata.cbSize = sizeof(APPBARDATA);
appbardata.hWnd = FindWindow(L"Shell_TrayWnd", 0);
if(SHAppBarMessage(ABM_GETSTATE, &appbardata))
{
// 自動的に隠れている
}

491:デフォルトの名無しさん
17/03/20 23:28:19.28 pgDQQg6b.net
最近、win32 はいつまで残るんだろうな、とふと不安になる
.net とか妙なものが蔓延ってるけど。

492:デフォルトの名無しさん
17/03/21 00:19:55.43 3zup+qvo.net
MS32bitOSが居る限りはなくならないだろ
.netだって内部的にWin32API呼び出しているし

493:デフォルトの名無しさん
17/03/21 02:42:20.25 dRq3wtLU.net
ここまで来て過去の莫大な資産を捨てることなんてあるの?
過去のwindowsアプリが新しいwindowsで動かなくなる日が来たら、それはもうwindowsじゃないと思う

494:デフォルトの名無しさん
17/03/21 03:05:14.83 RH/+/4vn.net
.NetですらFormsもWPFも放置でUWPに移行させようとしてるし、本音では過去のを全て捨ててUWPに一本化したいんだろう。
現実的には自らの強み(過去の資産)を手放すことになるから、やりたくてもやれないのだろうけど。

495:デフォルトの名無しさん
17/03/21 03:48:34.60 5huRZA1V.net
> FormsもWPFも放置でUWPに移行
MSって過去にも色々出しては無かったことにしてきたよな・・・
UWPすらどうなることか

496:デフォルトの名無しさん
17/03/21 04:41:12.33 ScjZQ1Ox.net
新しいものを出してきても、古いOSに対応させないから状況的に使えなくて、
使ってもいいかなと思える状況になった頃には古い技術になっているという悪循環

497:デフォルトの名無しさん
17/03/21 14:27:42.86 6WWBsw/3.net
>>485
windowsが無くなるまでは残るだろうと思ってたが
windowsが無くなりそうだしな

498:デフォルトの名無しさん
17/03/21 14:35:53.84 3zup+qvo.net
Win32APIは過去の莫大な資産であり、過去の莫大な負債でもある

499:デフォルトの名無しさん
17/03/21 17:25:00.36 ghEa3fZg.net
WindowsRuntimeを使わないといけなくなって
c++でコーディングし始めたけどかなり面倒くさい。
c++/cx使えっていうことだろうけど。
windows runtimeがwin32apiの代わりになるのかな?

500:デフォルトの名無しさん
17/03/21 23:26:33.91 y88e15JH.net
しっかし、なんで win32 はあんなに作るのが面倒くさいんだろうな・・・
1~10まで教える感じではなく、1、10、100、1000まで教えてやっと動く感じ。
その分痒い所に手が届くが。。。
だんだん倦厭されているということは、今の納期!納期!の文化とは合わないんだろうな。

501:デフォルトの名無しさん
17/03/22 00:22:36.94 153gnM05.net
>>493
CX糞
URLリンク(github.com)
↑正解

502:デフォルトの名無しさん
17/03/22 00:24:51.70 Qoic3+WX.net
工程の短縮というのもあるけど
「どのアプリケーションでも同じことをしたければ同じ操作をすればいい」と言うのを求めると
同じ操作(同じ動作)をひとつの部品として提供するほうが良い
そういう開発者独自の機能より、一般化された機能や操作性が重要視されるようになったのも一因だと思う

503:デフォルトの名無しさん
17/03/22 00:30:45.76 oXk4FtJ8.net
>>495
これってまだいろいろ未完成じゃないん?
sdkにも含まれてないし扱いが不鮮明なんだよな。

504:デフォルトの名無しさん
17/03/22 00:48:25.76 KP40M7fU.net
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
C++/CXを置き換えてくのか平行してくのか知らんけど言語プロジェクションを
純C++のヘッダのみで提供するコンセプトなのかしら
ただ肝心の.winmdからヘッダを生成するコンパイラが(まだ)未提供だから
Win2Dみたいな標準に含まれてないランタイムコンポーネントは使えん感じ
ちょっと試してみた感じ/ZWも不要で既存のC++ライブラリとマージしやすそうだし
VS2017+CUの時点で使い物になってて欲しいなあ

505:デフォルトの名無しさん
17/03/23 12:03:55.36 39On3zda.net
>>494
APIの粒度の問題を言われてもな

506:デフォルトの名無しさん
17/03/23 20:22:15.45 NUnQTAC3.net
でも結局どの言語でもAPIインポートするんだよな
意味ないな

507:デフォルトの名無しさん
17/03/26 14:21:34.35 bO2o38VX.net
>>494
>痒い所に手が届く
これ重要

508:デフォルトの名無しさん
17/03/26 15:20:48.57 6+wpTDFL.net
代わりに痒くもないところが腫れあがる

509:デフォルトの名無しさん
17/03/27 08:29:30.36 S+/FPMiq.net
そりゃ掻いてる場所が違うんだ

510:デフォルトの名無しさん
17/03/27 08:31:23.68 CkZovUeE.net
痒いところをかくといけないのでかけないようになってます

511:デフォルトの名無しさん
17/03/29 15:32:52.21 Si2XZHCG.net
ショートカットの.lnkとかあと特殊なフォルダとかに出る
アイコン右下のやつってなんて名前なんでしょうか?

512:片山博文MZ ◆T6xkBnTXz7B0
17/03/29 15:39:16.42 uG+6tdKu.net
overlay icons

513:デフォルトの名無しさん
17/03/29 15:40:33.19 F9h34aTY.net
IDがqz
URLリンク(www.youtube.com)
URLリンク(twitter.com)

514:デフォルトの名無しさん
17/03/29 15:41:59.56 3SDK0DLs.net
右下ってシールドか?
キャプチャぐらい貼れよ無能

515:デフォルトの名無しさん
17/03/29 15:43:11.84 F9h34aTY.net
これやろ

矢印

516:デフォルトの名無しさん
17/03/29 16:02:42.50 3SDK0DLs.net
矢印は左下だろ
アイコンオーバーレイって名称のことかな。ま、どうでもいいや

517:デフォルトの名無しさん
17/04/01 18:40:58.67 m+AYjiBS.net
Win32APIサポート終了のお知らせ

518:片山博文MZ ◆T6xkBnTXz7B0
17/04/01 18:56:32.68 Q4azjyiD.net
>>511
ソース希望

519:デフォルトの名無しさん
17/04/01 19:30:55.19 WcYopVS3.net
>>512
今日の日付

520:デフォルトの名無しさん
17/04/03 01:29:34.83 BKde4+E+.net
嘘をついていいのは午前中なんだが。

521:デフォルトの名無しさん
17/04/03 02:36:19.44 EQsFkd4r.net
それもウソだよ

522:デフォルトの名無しさん
17/04/03 20:45:49.66 fIAaSCsY.net
ウソだってのがウソなんだよ

523:デフォルトの名無しさん
17/04/03 20:47:03.89 DvppQH2R.net
4/1だけにしとけよ

524:デフォルトの名無しさん
17/04/03 21:39:52.92 gWDrFV4S.net
昭和64年は短命
64も短命?
128移行か

525:デフォルトの名無しさん
17/04/03 23:53:31.94 qQvnlfYK.net
コンピュータの進歩がかなり鈍化してきているし
物理的な限界に直面しつつあるから
128bitは俺の生きている間に来るかどうか
今の段階では個人用途でそれだけのメモリ空間が必要になる使い道が思い浮かばん
それはPCの性能がまだそこに全然達していないから全く思い浮かばんってことなんだけど
そこへ至るまでに何段階もの紆余曲折あるだろうから今の段階で考えるだけ無駄だけどね
世の中も全然変わってるだろうし
それはともかく256テラバイト以上のメモリともなると
それを処理するCPUも相当速くないと意味ないからね
今の状態ですらどちらかというとメモリは余り気味でCPUがボトルネックになってる感じだし
メモリは余ってるけど、データ積んだところでCPUが現実的な時間で処理しきれないっていう
まぁ1万コアぐらいないと256テラバイト以上のメモリは生かしきれないんじゃないかな
その場合メモリ帯域は足りるのかとか考えると、コアごとにキャッシュを山のように積むか
コヒーレンシとか考えるともはやそれも難しく
PS3のCellみたいなプログラミングを強いられるかもしれないな
生きてないと思うけど

526:デフォルトの名無しさん
17/04/04 00:09:36.07 3+iIkQVP.net
そういうことを考えると128bitはあまり現実味がないというか
ムーアの法則通りに半導体の性能が上がり続けたとしても
あくまで実時間に対して2倍2倍に増えていくってオーダーだけども
bit数の増え方はもっと激しくて、1bit増えるたびに2倍の空間になるのに
そのbit数自体が2倍2倍に増えて行く


527:わけだから、オーダーが全然違う 8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない どんどん間が長くなっていく 128bitは遠い遠い未来か、もしくは訪れないってことになる



528:デフォルトの名無しさん
17/04/04 00:18:54.12 u5Wjlvjc.net
>>519
そのころはAIがプログラム書くようになるから心配無いよ

529:デフォルトの名無しさん
17/04/04 01:30:54.91 BzumqOQh.net
>>520
>8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない
それはマイクロプロセッサしか見てないだろ。
メインフレームの世界だと、トランジスタ機になったときには
32bitや36bitがすでにできていたから、そこから全く進化してない
ともいえる。

530:デフォルトの名無しさん
17/04/04 05:56:42.50 /PIYb7TP.net
>>519
VLIWは?

531:デフォルトの名無しさん
17/04/04 08:06:05.98 Tyt+m4C4.net
>PS3のCellみたいなプログラミングを強いられるかもしれないな
中国のスパコン1位がそんなアーキティクチャで2位以下にトリプルスコアの圧勝だったな。
この先、性能を追求したらそうならざるを得ないかも。

532:デフォルトの名無しさん
17/04/04 08:19:35.41 1dU9a0gl.net
そんな下の層の違いは上には影響しないから俺には関係ないな

533:デフォルトの名無しさん
17/04/04 09:42:55.60 mPQmMovw.net
ボトルネックといえばフロントサイドバスとストレージ

534:デフォルトの名無しさん
17/04/04 22:01:11.94 73kME/Mz.net
128ビットも必要なプログラムは人間には書けない

535:デフォルトの名無しさん
17/04/04 22:14:00.40 eHZToKh6.net
書くのは簡単

536:デフォルトの名無しさん
17/04/04 22:23:58.48 u5Wjlvjc.net
一桁二桁の加減乗除なら良いが、128ビットフルに使う計算だと、紙の幅越えないかなw

537:デフォルトの名無しさん
17/04/04 22:31:01.19 2+tk3Olf.net
SSE2使ってるとどうやって128bit使おうかばかり考える

538:デフォルトの名無しさん
17/04/05 01:26:41.60 XXr1MGA7.net
っつーかナニを128ビットにするわけよ?

539:デフォルトの名無しさん
17/04/05 02:45:28.37 qYLi57Sr.net
俺のナニは8bitだしorz

540:デフォルトの名無しさん
17/04/05 08:06:40.12 Bh5NPBNH.net
なに見栄張ってるんだよ
お前のは a bit (=ちょっと) だろ

541:デフォルトの名無しさん
17/04/05 08:54:18.24 BdqpqknF.net
just bit(1ビットだけ)だろ?

542:デフォルトの名無しさん
17/04/05 09:46:20.77 v8qJ9EUo.net
>>531
そりゃcharを16個詰め込んだりするだろ

543:デフォルトの名無しさん
17/04/05 14:24:34.32 +eJqUohN.net
ここまで漏れの自演

544:デフォルトの名無しさん
17/04/06 17:46:17.73 Wug7VRpa.net
質問お願いします。
QueryPerformanceFrequency
で得た値は実行ごとに変わったりするから毎回計測しないと駄目ですか?

545:デフォルトの名無しさん
17/04/06 18:05:42.24 lEpGhGGY.net
どんな理由から毎回計測しないようにしたいんだ?それによる

546:デフォルトの名無しさん
17/04/06 18:18:16.44 Wug7VRpa.net
QueryPerformanceFrequencyの値がプログラムを終了するまで一定なら
1回しかこれを実行したくないし変わるなら一回時間を計測するごとにこれを実行したいです

547:デフォルトの名無しさん
17/04/06 18:30:27.17 lEpGhGGY.net
それなら一度だけでよかったはず

548:デフォルトの名無しさん
17/04/07 17:01:14.12 3o5iBWIM.net
システム起動中に変わることはないってさ

549:デフォルトの名無しさん
17/04/07 22:21:01.99 9JlGmFFU.net
ハイバーネーションみたいなのとかVMとか組み合わさるとどうなるかわかんないけどそういうことになってるね

550:デフォルトの名無しさん
17/04/08 09:03:07.92 ptqONvxu.net
俺は使うたびに毎回読んでるわ
あえてそうしない意味もないから

551:デフォルトの名無しさん
17/04/08 17:48:41.54 C7AQR+Mi.net
すみません、教えてください。
Borland BCC でC/Cppを勉強しているのですが、
CreateWindow( "EDIT", "あああああ", ....
にすると、あああああ の部分が文字化けして ,,,, と表示されてしまいます。
CreateWindow( "STATIC", "あああああ", ...
だと問題なく表示されます。
どうか教えてください、宜しくお願いします。

552:デフォルトの名無しさん
17/04/08 22:40:07.71 42pK0vcr.net
>>544
BCCはよくわかんけど、パラメーターが変とかじゃね?あと考えられるのはUNICODEとか?
このコードは RAD Studio10.1 BerlinとVS2015/2017で動くことは確認済み
HINSTANCE hInst;HWND hEdit,hStatic;
HWND hWnd= Handle; // BCBとか用
hInst=GetModuleHandle(0);
hEdit = CreateWindow(TEXT("EDIT") , TEXT("あああ") ,WS_CHILD | WS_VISIBLE | ES_LEFT,0 , 0 , 400 , 20 , hWnd , 0 ,hInst , NULL);
hStatic = CreateWindow(TEXT("STATIC") , TEXT("あああ") ,WS_CHILD | WS_VISIBLE | ES_LEFT ,0 , 20 , 400 , 20 ,hWnd , 0 ,hInst , NULL);

553:片山博文MZ ◆T6xkBnTXz7B0
17/04/09 07:27:35.73 qFsmFYyf.net
>>544
省略せずに書いてみて。

554:544
17/04/10 07:47:25.26 RoCnetHj.net
すみません、お手数をおかけします。

// あああああ が表示される
CreateWindow( "STATIC",
"あああああ", WS_CHILD | WS_VISIBLE | SS_CENTER,
x, y, w, h,
hGrp1, (HMENU)ID_TEXT1, hInst, NULL );
// あああああ が表示されず ,,,,, となる
CreateWindow( "EDIT",
"あああああ", WS_CHILD | WS_VISIBLE | SS_CENTER,
x, y+50, w, h,
hGrp1, (HMENU)ID_TEXT2, hInst, NULL );
hGrp1 はグループボックスです。

555:片山博文MZ ◆T6xkBnTXz7B0
17/04/10 08:21:28.02 73IQobxS.net
"EDIT"にはSS_CENTERは使えないよ。EDITにはES_...スタイルを使う。

556:デフォルトの名無しさん
17/04/10 08:53:21.05 ZIRNWk3W.net
>>547
とりあえずコントロール毎に指定フラグが違う事を指摘しておく

557:デフォルトの名無しさん
17/04/10 16:45:44.18 PH6zMRzh.net
>>547
マルチバイト文字列が上手くいかないなら"AAAA"のようにシングルバイト文字列で試してみればいいじゃないか。

558:デフォルトの名無しさん
17/04/10 17:20:37.45 vopNHtdq.net
>>547
WM_SETFONTを使って、フォントを関連付けしてみたらどうだい?

559:片山博文MZ ◆T6xkBnTXz7B0
17/04/10 17:25:49.47 73IQobxS.net
SS_CENTERがES_ENDELIPSISとして解釈されたんだろうな。
【今日の教訓】
EDITコントロールには、ES_で始まるスタイルを使え。SS_はEDITには使うな。

560:片山博文MZ ◆T6xkBnTXz7B0
17/04/10 17:32:00.56 73IQobxS.net
ごめん、ES_ENDELIPSISというスタイルはなかった。SS_CENTERの代わりにES_CENTERを指定すればいい。

561:デフォルトの名無しさん
17/04/10 21:33:08.91 G1/iiInq.net
なんでESとかSSとか種類が有るの?

562:デフォルトの名無しさん
17/04/10 21:59:23.57 PH6zMRzh.net
そりゃ特定のコントロールに対するものだからさ。
あとSS_CENTERもES_CENTERも winuser.h で 0x01L と定義されている。
例えば共通の定義 XX_CENTER 0x01L としていた場合、
EDITコントロールの仕様変更でXX_CENTER 0x02L としたくても
STATICコントロールで同じ意義を使っているため変えることが出来ないだろ。
もし定義を変えた場合、STATICコントロールで0x02L というのは別の意味を持っている(かもしれない)ので動作がおかしくなる。
だから意味は同じでも“値”としては別のものとして扱う(定義する)。

563:デフォルトの名無しさん
17/04/10 22:00:00.06 PH6zMRzh.net
ミス
意義→定義

564:デフォルトの名無しさん
17/04/10 23:44:29.58 CESguEkt.net
じゃー将来SS_CENTERが別の値に変更されても安心だね

565:デフォルトの名無しさん
17/04/11 07:55:30.63 pJyY6xCH.net
変えたらひどいことになるけどなw
本音と建前みたいなもんでCの欠点だな。後発言語はそういうとこカバーされてる(のもある)

566:デフォルトの名無しさん
17/04/11 17:52:35.12 xC3FSY5Y.net
モーダルダイアログをメインの親とし、その後動的にサブメニューを表示する仕組みがあります。
サブメニュー表示中も親側の操作を可能とするため、サブメニューはモードレスとしていますが、
TABなどのキー入力が効きません。
辛うじて、初期フォーカスがあるボタンのみスペースキーを受け付けます。
マウス操作は問題ありません。
原因としてはサブメニューのキー処理をする IsDialogMessage を含むメッセージループが必要
なんだろうと思いますが、こういう場合の定石というのはあるのでしょうか?
思い付く実装は以下2パターンです。
その1
親もモードレスとし、親のメッセージループ中にサブメニューのメッセージも処理する仕組みを入れる。
その2
サブメニュー表示後に別スレッドを立ち上げ、そこでサブメニューのメッセージループを回す。

普通はこうだよ。とか他の方法などありましたらお願いします。

567:デフォルトの名無しさん
17/04/11 17:55:40.75 xC3FSY5Y.net
ちょっと語弊がありましたので訂正です。
ここで言う「サブメニュー」とは、CreateMenu などで作られる一般的に言うメニューではなく、
単なるポップアップスタイルのタイトルなしダイアログのことです。
CreateDialog で画面を作っています。
勝手に言葉を作ってすみません。

568:デフォルトの名無しさん
17/04/11 18:23:36.29 9HH9Hffg.net
2つウインドウがあって、1つはメインウインドウ、もう1つはメニューウインドウ
メインウインドウにキーフォーカスがあるとメニューウインドウでキー操作できず、メニューウインドウにフォーカスがあるとメインウインドウでキー操作できない
メッセージを適宜流せばいいんじゃないか?

569:デフォルトの名無しさん
17/04/11 22:23:16.04 xC3FSY5Y.net
フォーカスはそれがあるウィンドウで処理できるようなUIを考えています。
ユーザーがメインウィンドウにフォーカスを(マウスなどで)移せば、
以降はそのウィンドウでキーボード操作ができればいいです。その逆も然り。
適宜メッセージを流すにしても、結局どこでメッセージループを回すかという
話になるのではと思うのですが、違うのでしょうか?

570:デフォルトの名無しさん
17/04/12 22:43:12.22 iYQoJoP4.net
なにいってんだこいつ

571:デフォルトの名無しさん
17/04/12 23:28:35.38 lhjyuLrL.net
分からないのに無理して答えるなよ

572:デフォルトの名無しさん
17/04/13 02:45:23.01 8XBnDqPS.net
最近よく足がつる

573:デフォルトの名無しさん
17/04/13 11:42:08.71 9jlRESvt.net
>>562
フォーカスを移してキーボード操作なんて危険なことを平気でやろうとする人はWin32APIなんて使わない方が良いんじゃね?
普通はフォーカスを移そうとしているオブジェクトにフォーカスを移す移さない関係なく文字列送信するもんじゃないの?
キーボード操作中にユーザーが別のウィンドウをクリックした場合とか考えないの?

574:デフォルトの名無しさん
17/04/13 13:32:39.75 OCOdT3+H.net
>>562
難しく考えるよりも、例えば、MVCベースで考えて設計したらいいんじゃねーの?
オブジェクト指向で設計するのもいいし、データ処理ありきで設計するのもあり、やりやすいように作ればいいよ。

575:デフォルトの名無しさん
17/04/13 17:59:38.26 zh4lU2gJ.net
>>566
なんで何も理解できていないのに無理に話に入ろうとするの?

576:デフォルトの名無しさん
17/04/13 18:16:04.36 xmE6C1ua.net
spyで見てどこにメッセージ届いてるか見ろ

577:デフォルトの名無しさん
17/04/14 00:20:20.46 +RGtmVs/.net
フォースを使うのじゃ

578:デフォルトの名無しさん
17/04/14 00:39:04.52 6ECgJlCU.net
Windows 10 Creators Update入れたら
DrawTextで大きめのフォントの描画が異常に遅くなった。
高DPI未対応のアプリは見捨ててGDIはシンプルに動いてほしい。

579:デフォルトの名無しさん
17/04/14 05:38:58.24 kIyPPZzD.net
>>567
2行目めちゃくちゃだなw

580:デフォルトの名無しさん
17/04/14 10:41:54.49 7fCdXhh/.net
>>561
>メッセージを適宜
それが質問内容でしょうよ。
>>566
タブコンに子ウィンドウ貼り付けて画面切り替えやキー入力受付なんて
日常茶飯事なのになにとち狂ったこと言ってるんだよ。
>>572
ほんとそう。
自分の知ってる単語を並べただけだわな。

581:デフォルトの名無しさん
17/04/14 11:11:32.10 LVRPT4/o.net
Win32APIの後継でc++/cliじゃないライブラリってないのかね?

582:デフォルトの名無しさん
17/04/14 11:29:24.19 iAr+rl+J.net
win32apiはオンリーワンで現役なので後継ってもんがそもそもなし
.netはラッパーライブラリ、cliは言語仕様
>>574の求めてる物の意味が分からん
UWPでも触ってろと言えばいいのか?

583:デフォルトの名無しさん
17/04/14 15:40:59.51 Z/bjVn5R.net
しいて言えばQtじゃね?
Qtのアプリって結構あるよね

584:デフォルトの名無しさん
17/04/14 18:23:47.19 R7yCPQGT.net
>>574
ライブラリってかAPIはユニバーサルwinのがそれじゃないの?

585:デフォルトの名無しさん
17/04/14 18:31:24.82 uRqmXJpf.net
WinRT API

586:デフォルトの名無しさん
17/04/14 22:27:03.58 Gjx6wpyy.net
ここでWTLがまさかの大復活を遂げるわけよ

587:デフォルトの名無しさん
17/04/15 06:16:39.59 qt9qpnGQ.net
ちょっとしたもんつくるにはwtlが一番いい

588:デフォルトの名無しさん
17/04/15 18:14:11.71 JjgxHVsv.net
>>574
Windows API
後継っつーか名前が変わっただけだが

589:デフォルトの名無しさん
17/05/05 00:01:23.37 j+7+fM28.net
Windows10S では Win32/.net アプリは動かないだと。
UWPに変換すれば行けるらしいが、もうおしまいか?

590:デフォルトの名無しさん
17/05/05 00:15:11.42 NU+YZp1H.net
Windows10Sが相手にされなくて終わるだけ。

591:デフォルトの名無しさん
17/05/05 00:41:30.18 W8ns9+oF.net
既に相手されていない感

592:デフォルトの名無しさん
17/05/05 03:08:44.86 IUUvTOhg.net
お前らが相手にされてないじゃん
おっさんしかいないだろうこのスレ

593:デフォルトの名無しさん
17/05/05 08:12:57.54 WdEsZnG0.net
今回のターゲット層はメインストリームじゃないから
既存のアプリが使えなくても不満は少ないと踏んでるんだろう
まあWindowsRTみたいに核爆死はしないんじゃないか
MSもそんなに数を出荷しないだろうから
もう一度WindowsRTをSurfaceやらに載せることを夢見ているのなら
やはりもう一度爆死するだろう

594:デフォルトの名無しさん
17/05/05 18:13:03.55 ERU+CvkU.net
教育用途だっけ
今時のキッズは学校支給タブレットの制限外してゲームしてるらしいからその点ではいいかもな

595:片山博文MZ
17/05/06 18:59:21.43 0OTJXmRc.net
あるプログラムで使用中のGDIオブジェクトの個数を数える方法はありますか?

596:デフォルトの名無しさん
17/05/06 20:36:55.22 TAVkl+y8.net
タスクマネージャで見れるよ

597:デフォルトの名無しさん
17/05/06 20:50:23.24 IA0Dpe0I.net
GetGuiResources(hProcess, GR_GDIOBJECTS)

598:デフォルトの名無しさん
17/05/06 20:53:17.94 Mwx5Td89.net
>>588
GetGuiResources
GR_GDIOBJECTS(0) Return the count of GDI objects.
ってあるし。

599:片山博文MZ
17/05/06 20:54:47.07 NWV3MG9s.net
ありがとー。

600:デフォルトの名無しさん
17/05/06 21:06:22.69 HiVS0qll.net
なにするつもりなのさ

601:片山博文MZ
17/05/06 21:08:39.06 NWV3MG9s.net
メモリーリーク対策やデバッグやらだよ。

602:雪風
17/05/06 21:54:04.69 QwsGrGdx.net
>>593
自演 オナヌーだろ

603:デフォルトの名無しさん
17/05/06 22:06:22.10 sQ11ayCM.net
書いてて恥ずかしくないの?

604:デフォルトの名無しさん
17/05/07 02:01:32.34 KMqw+OzL.net
memory leak detector
URLリンク(tocsworld.wordpress.com)

605:デフォルトの名無しさん
17/05/07 07:23:08.46 fOF53fEF.net
firefoxとかリーク笑えるよな

606:デフォルトの名無しさん
17/05/09 09:36:37.30 PBqzgUoz.net
特定のアプリケーションがハング状態になってるかを判断する方法ありませんか?
.netではRespondingプロパティで判断できるようですがwin32apiでやりたいので

607:デフォルトの名無しさん
17/05/09 09:45:13.26 XSL1JKA6.net
そこまで分かってるならソース読めよ
URLリンク(github.com)
SendMessageTimeoutでWM_NULLを投げてるだけだな

608:デフォルトの名無しさん
17/05/09 10:04:41.73 4hsRJ4JE.net
その質問コピペだよ

609:デフォルトの名無しさん
17/05/09 10:17:40.46 PBqzgUoz.net
ありがとうございました!

610:デフォルトの名無しさん
17/05/09 11:30:51.02 fjUlBZmQ.net
>>600
これ使ってDoS攻撃みたいなこと出来るんかな

611:デフォルトの名無しさん
17/05/09 21:20:50.87 2/UhKD8y.net
最近のアプリに多い、重い処理は別スレッドで実行してGUIが固まらないようにしてる場合は役に立たないかな

612:デフォルトの名無しさん
17/05/09 21:48:08.53 LCRfM0F6.net
>>604
それは「重い処理のときにハングアップしているように見える」というだけの話で、
そういうレベルでの意味ならマルチスレッド化によって役には立たない。
でもそういうマルチスレッド化したソフトウェアでも
画面描画の時の不具合などでハングアップすることもあるわけで役に立たないということはないよ。

613:デフォルトの名無しさん
17/05/09 22:06:52.23 2/UhKD8y.net
>>605
バグでずっと重い処理が終わらない場合を想定してた。ウィンドウメッセージは処理されるものの、事実上のハング。
確かに全く役に立たないわけではないね。

614:デフォルトの名無しさん
17/05/09 23:47:50.15 Ephb2XFu.net
ウィンドウがわかるならIsHungAppWindowってのがある

615:デフォルトの名無しさん
17/05/10 02:35:27.31 bnhY1qc6.net
>>606
動画の変換みたいに純粋に時間がかかる場合とか、ユーザーのクリック待ちとかもあるから、判断はできんだろうな

616:デフォルトの名無しさん
17/05/10 02:56:46.04 SJjrbjyQ.net
止めようとしても停まらないもの?
WindowsUpdateかな?

617:デフォルトの名無しさん
17/05/10 11:25:51.30 Cp7+CNi6.net
>>609
ネットワーク切れてからのタイムアウトも異常に遅いんだよな

618:デフォルトの名無しさん
17/05/14 19:29:07.89 QF9yNcvN.net
まだ見放されてないぞ
【IT】マイクロソフト、サポート切れOS「Windows 8、Windows XP、Windows Server 2003」にも修正ソフト提供
asahi.2ch.net
test/read.cgi/newsplus/1494723803

619:デフォルトの名無しさん
17/05/19 19:48:39.48 7xgwPeWo.net
質問ささてください
構造体AをGlobalAllocで領域を確保して値を入れた後、構造体BをGlobalAllocで確保すると、構造体Aのメンバであるポインタのアドレスが変わってしまうのですが何が原因なのでしょうか?

620:デフォルトの名無しさん
17/05/19 20:35:00.88 bDipVMhT.net
あるプロセスのメモリ情報のリージョンサイズや属性を調べるにはどのAPIを使えばいいですか?

621:デフォルトの名無しさん
17/05/19 20:49:42.55 McGsnd5l.net
>>612
Windowsは働き者の賢いOSだからなぁ

622:デフォルトの名無しさん
17/05/19 21:09:20.04 /MnRfLXT.net
動かしたくないならLockしてください

623:デフォルトの名無しさん
17/05/19 21:11:02.62 vqbyNvRL.net
>>612
GlobalAllocじゃなくて自分で書き換えてるんでしょ

624:デフォルトの名無しさん
17/05/19 21:22:03.75 Q8L1LGu9.net
>>612
GMEM_FIXEDを指定していないGlobalAllocでロックカウントが0の場合はメモリの再配置が起きる
GlobalLockとGlobalUnlockの間なら
「構造体Aのメンバであるポインタのアドレス」は変わることがないけど
GlobalUnlockを呼び出しロックを解除した場合は再配置される可能性がある

625:デフォルトの名無しさん
17/05/20 18:36:33.10 urI3JAo7.net
皆様レスありがとうございます
>>612
構造体BのGlobalAllocをコメントアウトすれば問題なく動くのでこれが原因なのはたぶん間違いないです
>>617
構造体A自体のLockやFIXは試しましたがダメでした。構造体Aは領域確保後にwinAPIに渡して値を格納してもらうのですが格納後にメンバ全ての固定が必要なのでしょうか?

ともあれメモリ再配置が原因なのですね。ありがとうございました。この方向でもう少し試してみます。

626:デフォルトの名無しさん
17/05/20 18:43:52.60 YAniTqrY.net
違うんじゃね

627:デフォルトの名無しさん
17/05/20 19:05:41.41 rnnQH6fx.net
ソースコードにイージーミスがある可能性の方がクッソ高いと思う

628:デフォルトの名無しさん
17/05/20 19:06:46.68 opost44+.net
>>618
そもそもの使い方が間違っているんじゃないか?
>構造体Aは領域確保後にwinAPIに渡して
そのwinAPIは何?
というかなぜ隠す必要があるのか

629:デフォルトの名無しさん
17/05/20 19:08:39.87 YAniTqrY.net
必要最小限の再現ソース晒してからだな

630:デフォルトの名無しさん
17/05/21 02:26:55.08 8+aEBKAw.net
構造体A、もしくはその近くのメモリ確保量が足りていないような気がする
スタック破壊、または、メモリ内容破壊では?

631:デフォルトの名無しさん
17/05/21 10:34:21.57 UufpipHO.net
>>613
VirtualQueryEx

632:デフォルトの名無しさん
17/05/21 10:40:12.71 8IHB32RP.net
すみません。自分がC++素人でメモリ周り疎いのでよくあるトラブルかなと思い、動作確認できている部分は抽象的に書きました。イージーミスの可能性はかなりあります。
ソースが手元にないのですが、具体的にはこのような処理をしています。スマホから書いたので文法ミスあるかもしれません。
メイン処理
DWOR count=0;
LPBYTE pStructA = (LPBYTE)GlobalAlloc(GHND,sizeof(0));
GetPrinterInfo(pStructA,&count);//自作関数 pStructAに構造体格納
/*ここでブレーク張ってpStructAのpNameのアドレスが正しい文字列指してるのは確認済み*/
PStructB pStructB = (PStructB)GlobalAlloc(GHND,sizeof(StructB)*count);
/*ここで改めてpNameを取得しようとするとpNameのアドレスがpStructBを確保する前と変わっている。元の文字列データは以前として前のアドレス上に存在してることは確認済み。pStructA自体のアドレスは変わっていない
*/
for(i=0 ;i<count;i++){
LPTSTR name= (((PRINTER_INFO_1*)pStructA)+count)->pName;
}
~~~
自作関数 (動作確認済み)
DWORD GetPrinterInfo(LPBYTE pStructA, LPDWORD count){
DWORD result=0;
DWORD pNeeded=0;
//必要サイズ取得
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,NULL,pdw
&pNeeded,count);
//必要サイズ再確保
Global ReAlloc(pStructA,pNeeded,GHND);
//ここでPRINTER_INFO_1構造体をpStructAに格納
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,pStructA,pdw
pNeeded,count);
return result;
}

633:デフォルトの名無しさん
17/05/21 11:10:23.22 Bmvuj1qA.net
GlobalAllocの戻り値のハンドルを直接キャストしてポインタに代入したら駄目だろ
ハンドルを引数としてGlobalLockを呼び出して、その戻り値をキャストしてポインタに代入しろ

634:デフォルトの名無しさん
17/05/21 11:25:17.73 8zMWeNzv.net
蓋を開けてみればやはりこんなもんだ

635:
17/05/21 11:29:51.82 pUWFtSb1.net
p = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
HeapFree(GetProcessHeap(), 0, p);
でうまくやってるよ,GlobalAlloc は win3.1 の仕様を下敷きにしているので使いにくいよ

636:デフォルトの名無しさん
17/05/21 14:52:03.05 2E7Z41P0.net
オワコンだしな
今はもうmallocでいいよ

637:
17/05/21 15:16:35.99 pUWFtSb1.net
>>629
それはどこにあるのかな?

638:デフォルトの名無しさん
17/05/21 16:25:59.44 qIzrXw0L.net
>>625
関数の仕様ぐらい確認しろといいたい
URLリンク(msdn.microsoft.com)
GMEM_FIXEDを指定していないGlobalAllocはメモリハンドルを返す
アドレスではなくハンドルであり、このハンドルをGlobalLockに渡すことでメモリアドレスを取得できる
メイン処理
DWORD count=0;
HGLOBAL gm = GlobalAlloc(GHND,sizeof(0));
GetPrinterInfo(gm,&count);
LPBYTE pStructA = (LPBYTE)GlobalLock(gm);
for(i=0 ;i<count;i++){
LPTSTR name= ((PRINTER_INFO_1*)pStructA)[i].pName;
}
~~~
DWORD GetPrinterInfo(HGLOBAL gm, LPDWORD count){
DWORD dwSize;
DWORD result=0;
DWORD pNeeded=0;
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,NULL,0,&pNeeded,count);
Global ReAlloc(gm,pNeeded,GHND);
dwSize = GlobalSize(gm);
LPBYTE pStructA = (LPBYTE)GlobalLock(gm);
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,pStructA,dwSize,&pNeeded,count);
GlobalUnlock(gm);
return result;
}

639:デフォルトの名無しさん
17/05/21 16:40:14.23 s+TjotGN.net
GMEM_MOVEABLE
移動可能メモリを割り当てます。Win32 環境では、物理メモリ内でメモリブロックが移動されることは決してありませんが、既定のヒープ内で移動することは可能です。
戻り値は、メモリオブジェクトのハンドルです。このハンドルをポインタへ変換するには、GlobalLock 関数を使います。
この値を GMEM_FIXED フラグと組み合わせることはできません。

Win32では移動することがないあるよって言ってるし、GPTRフラグを使うか、メモリ確保をmallocなりに置き換えたほうが良いね
EnumPrintersに渡すバッファのポインタは別になんでも良いみたいだし

640:デフォルトの名無しさん
17/05/21 16:51:37.43 UufpipHO.net
GlobalAllocはクリップボード弄る時くらいでいいよ

641:デフォルトの名無しさん
17/05/21 18:27:54.67 8+aEBKAw.net
こうゆう奴がプロジェクトにいると、デバックでは動くがリリースでは動かない
プログラムとか出来上がるんだろうな。。。

(もちろん、リリース+デバック情報埋込なら動く最悪のパターン)

642:デフォルトの名無しさん
17/05/22 03:45:08.81 6WP6IGo9.net
mallocでも、newでも好きなのつかったらいいんじゃね?

643:デフォルトの名無しさん
17/05/22 07:02:35.87 1fjxccfj.net
sizeof(0) ...

644:デフォルトの名無しさん
17/05/22 10:58:01.86 ZhEHdQZR.net
みなさま本当にありがとうございました。
メモリ確保の方法に関しては古いのはなんとなくわかってるのですが、意見できる程知識がないのが実情です……
ともあれ解決方法の兆しが見えたので頑張ってみます。

>>634
耳が痛いですが自分も本当にそう思います……個人的には勉強になるのでいいんですが……
リリース気をつけておきます

645:片山博文MZ
17/05/26 15:19:18.57 hi3mNk6y.net
※未承認広告※
Win32メッセージクラッカー簡単入力。
MsgCrack
URLリンク(github.com)

646:片山博文MZ
17/05/27 10:36:14.50 je1Ltzc3.net
※未承認広告※
これがWin32のラバーバンドやで。重要な技術だから、確認しとくれや。
URLリンク(github.com)

647:デフォルトの名無しさん
17/05/27 10:39:23.30 I7pwMhhb.net
皆さんは、ダイアログの HWND に対し SetWindowLongPtr, GetWindowLongPtr を使用する場合
GWLP_USERDATA と DWLP_USER をどのように使い分けていますか?

648:デフォルトの名無しさん
17/05/27 13:16:53.40 olQh0zw8.net
使い分けもなにも
get してから & とか | とかして set してる

649:デフォルトの名無しさん
17/06/14 11:22:26.39 +7k/9HY0.net
エディットボックスにES_MULTILINEを付けると
Ctrl+Aですべて選択ができなくなってしまうのだけど、
これはなにか技術的な理由があってのことですか?
それとも、昔から修正されていないだけのバグですか?

650:デフォルトの名無しさん
17/06/14 11:39:15.66 +7k/9HY0.net
642の追記ですが、ES_MULTILINEだけでなく、ES_READONLYを付けたときも、
同じようにCtrl+Aが効かなくなるようです。

651:デフォルトの名無しさん
17/06/14 12:11:52.68 Jdv7hZ4r.net
>>643
それはサブクラス化で対応

652:デフォルトの名無しさん
17/06/14 12:19:57.15 +7k/9HY0.net
>>644
つまり、ES_MULTILINEやES_READONLYはCtrl+Aに対応すべき状態ではない
というような技術的な理由があるわけではなく、
単にマイクロソフトが修正していない昔からのバグで、
サブクラス化などで対応しても問題ないものなんですよね?

653:デフォルトの名無しさん
17/06/14 13:35:54.11 pxuX+RKK.net
ctrl+aが全選択という統一ルールがないとかなんとか

654:デフォルトの名無しさん
17/06/14 19:35:40.93 +7k/9HY0.net
>>646
エディットボックスが常にCtrl+Aを扱っていないなら納得するんですが、
ES_MULTILINEやES_READONLYが付いているときだけ効かなくなるんです。

655:デフォルトの名無しさん
17/06/15 10:24:59.35 0e975zeL.net
>>647
挙動としては認識通り
技術的な問題ではないのでサブクラスなりインスタンスなりのKeyDownイベントでSelectAll()して構わない
普通はついでにCopy()やCut()のショートカットキー処理もつけておく

656:デフォルトの名無しさん
17/06/15 11:09:41.39 pFacwd6b.net
>>648
解説ありがとうございます。
エディットボックスの処理を信じずに、Ctrl+Aなどの動作を載せてしまいます。

657:デフォルトの名無しさん
17/06/23 01:36:52.51 /7Z8Xk53.net
CLIP STUDIO PAINTのようにツールっぽくする為にウインドウ全体を茶色に統一するようなWin32APIと言うのがありますでしょうか?
SKINかもしれないのですがSKINの仕方が解りません。
それとMediBang Paint Proのようにウインドウ全体でなくメニューとツールウインドウだけを茶色に統一する方法も
解りましたらお願いします。

658:デフォルトの名無しさん
17/06/23 03:31:09.37 1Ua/Rfq9.net
>>650
ないです。

659:デフォルトの名無しさん
17/06/23 10:30:01.91 0OdP20aK.net



660:�学生でもランサム作ってるんだから がんがれ



661:デフォルトの名無しさん
17/06/24 05:45:55.83 AiSsJYjg.net
>>652
ランサムだけなら誰でもできる。ランサムウェアと呼ぶから重要なことが抜けて伝わってしまう。

662:デフォルトの名無しさん
17/06/24 12:23:00.00 29Lhuze+.net
ただのバッチだったしな

663:デフォルトの名無しさん
17/06/24 12:44:27.58 TJcGM6+6.net
警察は実績が欲しく、子供は有名になりたかったらしいので
両者の思惑が一致した最高の形なんだろう

664:デフォルトの名無しさん
17/06/24 18:30:11.33 AiSsJYjg.net
>>654
重要なのはWindowsの穴をついてプログラムを実行できたところだからね。

665:デフォルトの名無しさん
17/06/24 18:34:45.55 xexj0oOj.net
穴ついてたのかよw
どうせこのbat実行してね、だろうと思ってたんだが違ったか

666:デフォルトの名無しさん
17/06/24 18:47:24.91 fDMY1AQ8.net
エッチなビデオ.avi .bat
とかじゃないの?

667:デフォルトの名無しさん
17/06/24 19:05:41.31 xexj0oOj.net
軽くぐぐってみたがどこの穴ついたかわからなかった

668:デフォルトの名無しさん
17/06/24 20:21:25.60 sGEalsxM.net
そういえば歴代OSの擬人化
みんな女の子だったよな
穴あって当然だな

669:デフォルトの名無しさん
17/06/24 20:22:32.89 fDMY1AQ8.net
男の子にだって穴はあるよ?

670:デフォルトの名無しさん
17/06/24 20:25:44.81 sGEalsxM.net
アッー!

671:デフォルトの名無しさん
17/06/24 21:08:00.00 eqxuJWIk.net
こないだの WannaCrypt ランサムの話なら SMB の穴だけど

672:デフォルトの名無しさん
17/06/24 21:26:43.99 xexj0oOj.net
中学生WannaCryptt使ってたのかよ・・・

673:デフォルトの名無しさん
17/06/25 16:33:39.46 WhQ0StjH.net
バッチファイルを書き換えられると危険が危ないと書いてある
朝日新聞の記事を読んだだけなのでよくわからないけど、
暗号化するプログラムをコピペで作ったんでしょう?
暗号化するバッチをコピペで作っただけなの?
どっちにせよ、穴は使ってない、ただのオナニーだった感じなんだが。

674:デフォルトの名無しさん
17/06/25 17:24:22.61 wnVI7vr5.net
>>665
じゃあどうやってファイルを書き換えたんだよ?

675:デフォルトの名無しさん
17/06/25 17:29:15.45 ZffRoDi0.net
バッチファイル実行前にファイル書き換えたのか?

676:デフォルトの名無しさん
17/06/25 17:35:36.22 wnVI7vr5.net
ランサムウェアよりも前に穴をつくマルウェアが出てきて、そのマルウェアを参考にしたのが、今回のランサムウェアだと思うが。

677:デフォルトの名無しさん
17/06/25 18:10:10.89 ZffRoDi0.net
その元になったマルウェアは何なんだ?

678:デフォルトの名無しさん
17/06/25 18:17:51.52 gomAIGS/.net
nimda

679:デフォルトの名無しさん
17/06/25 18:22:48.05 WhQ0StjH.net
>>666
crypt.exe c:\windows\*.*
echo 暗号化しました金払え
こんな感じ。

680:デフォルトの名無しさん
17/06/25 18:43:40.36 ZffRoDi0.net
>>670
nimdaで中学生逮捕って情報見つからん。ソースどっかある?

681:デフォルトの名無しさん
17/06/25 22:03:09.80 mrQK8XKT.net
いい加減にしろよ
引っ込みつかなくなった奴のマウント取って喜ぶような
小学生並みの神経してんのかお前は

682:デフォルトの名無しさん
17/06/25 22:11:16.11 a6wiqT5o.net
そんなキレるような話なのか

683:デフォルトの名無しさん
17/06/25 22:42:25.16 x/CHo8JV.net
windows10のGDI描画をXP相当にするAPIは無いものかのう

684:デフォルトの名無しさん
17/06/25 23:05:37.96 WhQ0StjH.net
>>672
誰がnimdaで中学生逮捕なんて話をしてんだ?
脳みそ湧いてんの?

685:デフォルトの名無しさん
17/06/25 23:21:44.20 43L7ow5i.net
>>675
visual style、runa style...いわゆる ThemeAPI の話?
なら、いわゆるスキンの類だと思うので API とか GDI とかの階層の話じゃないと思う。
カスタマイズでどうにかって話になるか、
URLリンク(www.japan-secure.com)
XP から theme.dll をぶっこ抜き・・・うーんワスレタ

686:デフォルトの名無しさん
17/06/26 05:22:59.28 PKYMbkgl.net
>>677
THX もう少し研究してみます

687:デフォルトの名無しさん
17/06/26 12:35:00.28 H+izVTcm.net
XP風は好きじゃないので
2000風にしたいな


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch