Win32API質問箱 Build124

■ このスレッドは過去ログ倉庫に格納されています
2017/11/11(土) 19:23:00.69ID:TpLoCFAx
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/

■関連スレ
Visual Studio 2017 Part4
http://mevius.2ch.net/test/read.cgi/tech/1509244956/
【C++】 DirectX初心者質問スレ Part40 【C】
http://mevius.2ch.net/test/read.cgi/tech/1474782237/
2018/04/13(金) 10:49:29.00ID:bFIkQBXO
処理置換しなくてもrawinputだとか入力関連のapi叩いても盗れる可能性あるか
2018/04/13(金) 11:35:55.96ID:UdLtdLwz
>>323
取る方法はいくらでもあってドキュメント化もされている
今回の質問は簡易なコードでマウスと同様の動作をさせる方法は無いか?ということ。
2018/04/13(金) 11:58:28.35ID:bFIkQBXO
◎の中はメッセージ来ないから困ったって質問かと思ったんだが違ったのか
わかんないもんに口出すべきじゃないなw
326313
垢版 |
2018/04/13(金) 12:15:36.03ID:MklDTzxh
書き忘れてた。WM_TOUCH系の初期化すると◎のジェスチャーとか、不具合でるよ。
初期化しないで、321のコード実装してみたらいいと思う。
2018/04/14(土) 00:16:48.20ID:a7yPR2Rx
サーバー上のファイルを編集中に、他人からの全てのアクセスを禁止したいのですが
CreateFileでdwShareModeを0にすれば排他制御は万全だと思いますか?
良い方法があれば教えてください。
328327
垢版 |
2018/04/14(土) 00:22:28.28ID:a7yPR2Rx
補足。クライアントからサーバー上のファイルを編集するときです。
329デフォルトの名無しさん
垢版 |
2018/04/14(土) 02:38:22.36ID:lnTeyTPJ
deleteされちゃいますよ
2018/04/14(土) 06:15:46.39ID:fnoJLpZQ
linux やわunix サーバなら消されちゃうかもね
331327
垢版 |
2018/04/14(土) 18:14:56.59ID:a7yPR2Rx
編集完了までCloseHandleしなければdelete出来ないんじゃないでしょうか。悪意のある攻撃者はいないとして。

私が心配しているのは、一つのファイルに対して、複数のクライアントから同時に排他Open(CreateFile)が
発生したとして、複数のクライアントで排他Openが成功してしまう可能性があるんじゃ無いかって事です。
2018/04/14(土) 18:23:06.50ID:s4TUpiI7
>>331
Open/Close は排他ロックにならない、ときいたことがある
333327
垢版 |
2018/04/14(土) 18:32:55.41ID:a7yPR2Rx
>>332
そうですか、、
小さいシステムなので、サーバ側プロセスまで作りたくないなーと思ってたんですが。
2018/04/14(土) 20:04:17.98ID:fnoJLpZQ
smb なら排他的にロックされる
2つのクライアントが矛盾する共有モードでファイルをオープンしたり削除したりはできない。

https://docs.microsoft.com/en-us/rest/api/storageservices/managing-file-locks

smb のサーバが linux や mac で、その os などから smb 以外の方法で
ファイルを変更、削除したりは可能だけどこれはどうしようもない

もしも目的が他のクライアントにエラーを返すとこでなく
書き終わった時点でアプリが書いた内容になっていることを保証したい
(書いている途中のファイルを読まれないように)だけなら
別名のファイルを作って書き終えたところで MoveFile するというよくある手法もある。
2018/04/14(土) 20:19:46.84ID:fnoJLpZQ
上のurlはazureのドキュメントだけどsmbでWindowsサーバなら同じ仕様だと思う
336327
垢版 |
2018/04/14(土) 21:05:12.23ID:a7yPR2Rx
>>324
私にsmbはちょっと難易度高杉のようです。
妥協 or 違うアプローチを考えてみます。
337名無し@キムチ
垢版 |
2018/04/14(土) 21:10:19.87ID:ywXYi+/7
質問です。
glutを使ったプログラムで、描画の後ダブルバッファ交換のglutSwapBuffers();を入れると、
windowの画面が真っ白になってしまって何も表示されなくなるのですが、どうしたらいいですか?
2018/04/14(土) 23:46:15.72ID:fnoJLpZQ
>>336
Windows の標準ファイル共有プロトコルSMBを用いて接続している
ファイルサーバ上のファイルなら
CreateFile の共有モードでロックができるということです。
2018/04/15(日) 00:06:05.13ID:G47pMzYo
>>338
なるほど。でしたら概ねロックできそうです。
ごく少数のクライアントは無料のVPNツールでLAN外からサーバーにアクセスしているんですが
これもSMBプロトコルなのかどうかは調べてみます。
情報ありがとうございました。
340デフォルトの名無しさん
垢版 |
2018/04/15(日) 10:41:11.68ID:E1b18XLI
>>337
どこに描いたの?
何を表に持ってきたの?
341名無し@キムチ
垢版 |
2018/04/15(日) 21:45:37.16ID:X4sBLOS0
Windowsのコールバック関数の中のWM_PAINTにダイレクトXの描画処理を書くと、エラーが出て実行されないのですが、どうしてですか?どうしたらいいですか?
2018/04/15(日) 21:53:50.01ID:qZPDSYA2
まず全裸になります
343デフォルトの名無しさん
垢版 |
2018/04/15(日) 22:41:41.98ID:UX4y5Mn1
使わなくてもいいからDCだけ確保
2018/04/15(日) 23:01:26.11ID:+Hw5szkB
ドリームキャスト手に入れるのは大変そうだ
345デフォルトの名無しさん
垢版 |
2018/04/15(日) 23:27:51.27ID:xpwShDOv
ぴぴん
2018/04/15(日) 23:37:59.49ID:qZPDSYA2
dc1 = beginpaint
dc2= getdc
dc2= releasedc
dc1=endpaint
2018/04/16(月) 08:23:21.50ID:5yp4kCb0
>>344
MDが復刻されるらしいじゃん。
上手くいけばSSやDCも行けるよ。
348デフォルトの名無しさん
垢版 |
2018/04/16(月) 09:43:27.45ID:75OnkAat
カードキャプターさくら
349名無し@キムチ
垢版 |
2018/04/17(火) 18:57:41.86ID:nz/ieMrf
初歩的な質問ですが、fgxsdkを使ったプログラムと、openGLを使ったプログラムをつくりましたが、
どちらか片方づつだけしか使えません。ひとつのプログラムで両方使おうとするとエラーが出てしまいます。
どうしてそうなるのですか?またどうすればいいのですか?
350デフォルトの名無しさん
垢版 |
2018/04/18(水) 00:45:47.24ID:lRwbg5zI
バッファを上書きしないように気を付ける
351297
垢版 |
2018/04/19(木) 18:13:16.20ID:o7VdbXqH
297ですが、WM_POINTER 系を WM_LBUTTON や WM_MOUSEMOVE に
投げることで無事解決しました。
WM_POINTER 系はスクリーン座標、マウス関連はクライアント座標という
不一致の整合性を取ることと、ペン操作中の描画がされないので
UpdateWindow を随時実行すること、あとは WM_POINTER 系の処理後に
DefWindowProc は実行しないことで快適に動作するようになりました。
(描画については元の作りが甘いのが原因かもですが)

>>321
色々とありがとうございました。
取りかかりが遅くなりましたが、おかげさまで対応できました。
352297
垢版 |
2018/04/19(木) 18:16:39.64ID:o7VdbXqH
> WM_POINTER 系を WM_LBUTTON や WM_MOUSEMOVE に
> 投げることで無事解決しました。

なんか変ですね。

WM_POINTER 系処理時に、併せて適切な WM_LBUTTON や WM_MOUSEMOVE
も SendMessage or PostMessage で送信することで無事解決しました。
2018/04/21(土) 17:47:35.10ID:h8C5n4IB
surfaceのペンの筆圧などの情報を取得したい場合、何というキーワードで調べるべきですか?
2018/04/21(土) 17:53:19.89ID:9EumPI9y
>>356
SurfaceはWin32APIを使いません。代わりにWindows RTを使います。
2018/04/21(土) 18:05:27.99ID:h8C5n4IB
言葉足らずかも知れません。
surface proのペンの情報もwindows rtですか?
2018/04/21(土) 18:18:24.59ID:gTRsxGnx
>>353
直前までのスレの話題がそのまんまなんだがなあ
とりあえずこのへんを満遍なく読んでおきなさい
https://msdn.microsoft.com/en-us/library/windows/desktop/hh454916.aspx
ちなみに筆圧/傾きは基本的にGetPointerPenInfo系


片山は馬鹿だから無視しとけ
2018/04/21(土) 18:24:09.27ID:h8C5n4IB
ありがとうございます。
2018/04/26(木) 08:01:02.21ID:qK0Tcf+m
>>356
筆圧取得できました。

ペンだけでなくタッチもわかったのはとてもありがたい。
今後の課題は筆圧の最大値の取得、座標のズレの解決だ。
lParamからx,y座標取得してスクリーン座標からクライアント座標に変えたけど最大4pxぐらいずれてる(気がする)
359デフォルトの名無しさん
垢版 |
2018/04/26(木) 16:08:09.24ID:obVS20md
ありがとうございます。
2018/05/09(水) 10:38:44.80ID:urlL8t0C
https://docs.microsoft.com/en-us/windows/arm/

ハードが高杉て買えません
2018/05/11(金) 00:47:31.66ID:jtnkDrxN
WiXでディレクトリを作ってCreatorOwner(S-1-3-0)にアクセス権設定してみたら
プロパティのアクセス許可エントリにに"CREATOR OWNER"というグループが出てきた。
こんなの初めて見た。
362デフォルトの名無しさん
垢版 |
2018/05/11(金) 10:36:48.86ID:eFEUpfi5
へ?
2018/05/11(金) 20:07:56.91ID:jtnkDrxN
saclsなんかでS-1-3-0を指定しても実在の所有者のSIDに置き換わるじゃん。そもそもそのためにあるわけだし。
ACLには入らないものかと思ってた。
2018/05/11(金) 21:00:03.68ID:KUxDXsAg
ん?
365デフォルトの名無しさん
垢版 |
2018/05/12(土) 11:03:35.97ID:yo5m8R46
何十年も経ってるのに今更初めてとか
2018/05/12(土) 13:23:12.21ID:Wuy9HJPF
何十年てなんぞ?
2018/05/14(月) 00:22:00.59ID:VV/fGzO7
ゲームの効果音を鳴らすのにmciSendCommandで鳴らそうとすると
一瞬画面が固まるので別スレッドで再生するようにしたのですが改善せず固まります。

以下のサイトの別スレッドで動かす例も試しましたがメインループが1秒に1回しか実行されません。
ttp://eternalwindows.jp/winmm/mci/mci02.html

DirectSoundを使うしか画面が固まるのを回避する方法はないでしょうか?
2018/05/14(月) 08:42:54.37ID:YOvAeQk/
鳴らす毎に固まるん?
ロード画面とかでオープンだけ先にやっておいて
後は鳴らし終わったら最初にシークしてまた鳴らしたらいいんでない?
的外れてたらごめんな
369367
垢版 |
2018/05/14(月) 09:10:04.81ID:Yo4sXSf8
すみません。自己解決しました。
キーが連続して入力されたと判定されないように
前回から0.1秒以下の間隔で入力されたキーを無視する部分で
レンダリングまで無視してしまっていました。
370デフォルトの名無しさん
垢版 |
2018/05/14(月) 13:32:12.89ID:dnGRWxRE
>>367
waveout
2018/05/14(月) 15:03:48.05ID:YOvAeQk/
ズコー
372367
垢版 |
2018/05/14(月) 19:29:13.78ID:TSV87Y/E
度々すみません。
音の再生で画面が固まらないようには出来たのですが、
オープン、シークを事前に行っておいても再生までに少し時間がかかってしまいます。
例えばクリックでクリック音を鳴らせるようにすると、クリックを連打した時に鳴らなくなってしまいます。
クリック音は1フレーム目から音が鳴るように調整済みで、高速化のためwavファイルにしてあります。
core i5 8250u, m.2 ssdの環境で最適化ビルドでも再生まで0.2秒以上かかります。
mcisendcommandを高速に動作させる方法はないでしょうか?
2018/05/14(月) 19:57:29.23ID:9wWfcYFS
MessageBeepでは?
2018/05/14(月) 22:23:19.23ID:Zf7UDWDq
sndPlaySoundでは?
2018/05/15(火) 08:42:15.75ID:RLKB0pPy
まさかのWM_LBUTTONUP?
2018/05/15(火) 09:35:21.30ID:iduN+0hu
>>372
ないんじゃない?
2018/05/15(火) 11:24:49.27ID:iNTYPTvx
20年近く前に設置されたお手軽APIにリアルタイム性を求めるのもな…

ゲーム用の効果音ならDirectXTKのAudio(XAudio2のラッパー)がお手頃かしら
2018/05/16(水) 03:14:40.15ID:52uBQuev
OpenALでもいいんじゃね?
379デフォルトの名無しさん
垢版 |
2018/05/18(金) 06:39:21.09ID:KYXS7qiH
キーボードの入力だけを無効化するAPIを教えてください
BlockInputだとキーボードとマウスの両方が無力化されてしまうので。
2018/05/18(金) 07:22:41.68ID:JEElro2Y
そのものずばりなapiはないんじゃないかな
2018/05/18(金) 09:20:15.65ID:KYXS7qiH
ないじゃねーんだよアホ
だったらどうすりゃ実現できるのか教えろよ
2018/05/18(金) 09:36:45.73ID:JEElro2Y
うわあ
2018/05/18(金) 09:49:08.60ID:C170FFEJ
フィルタドライバ
2018/05/18(金) 09:56:15.34ID:crDPuGzZ
ローレベルフックでキーボード入力を捨てられた気が
2018/05/18(金) 10:17:50.27ID:mWyCAt5N
>>381
教えろよじゃねーんだよアホ
だったらどうなりゃ理想なのか教えろよ

指定したプロセスのみ無効化?
全てのプロセスで無効化?
BlockInputを試したという事は全てのプロセスで無効化でいい?
2018/05/18(金) 10:20:51.20ID:JEElro2Y
BlockInputはそのスレッドだけじゃないかな
おまえらこんな糞な奴のをよく答える気になるなw
2018/05/18(金) 10:29:53.45ID:PW/5KQgQ
キーボードを取り外す
展示とかに使うならこれだなw
2018/05/18(金) 11:03:10.17ID:/yTMyJuo
16bit時代にはそのものズバリのapiがあった
2018/05/18(金) 12:07:37.64ID:aDkqve5K
easyhookを使えるようにするにはどうすればいいのですか?
たすけて
2018/05/18(金) 12:21:16.66ID:JEElro2Y
チュートリアルにサンプルコード載ってるじゃん
2018/05/18(金) 12:23:26.03ID:aDkqve5K
ごめんなさい
プログラムするんじゃなくて、インストールの仕方、使えるようにする方法がわからない
2018/05/18(金) 12:40:49.02ID:JEElro2Y
ducumentationにインストール方法書いてあるじゃん
2018/05/18(金) 12:53:35.86ID:aDkqve5K
どれ?。。
プロジェクトに追加されてたらOKなの?
EasyHookをつかってるプログラムが動かないんだけど
RemoteHooking.Injectがエラーになる
2018/05/18(金) 12:55:27.82ID:JEElro2Y
ducumentationからコピペ

Adding EasyHook to your project
1.Open your project in Visual Studio, or create a new one.
2.Right-click your project within the Solution Explorer and select “Manage NuGet Packages…”.
3.Search for “EasyHook”
4.Select the EasyHook package and click install.
After accepting the license agreement your project is ready to use EasyHook.
2018/05/18(金) 12:59:51.80ID:mWyCAt5N
おまえこんなスレチなのをよく答える気になるなw
2018/05/18(金) 13:06:44.09ID:aDkqve5K
ごめんなさい
どこいけばいいの?
2018/05/18(金) 13:26:58.25ID:mWyCAt5N
あるならEasyHookをつかってるプログラムのスレ
無いなら入手元良く見る
2018/05/21(月) 14:45:12.74ID:J624wk10
keymapでも壊してみたらいいんじゃね?
2018/05/21(月) 15:51:07.84ID:pTo/71V7
壊すのも元に戻すのも再起動必要になるだろ
400デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:14:45.20ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

IAVAJ
2018/05/24(木) 10:37:52.55ID:cPlRxlDn
IAVAJ
402デフォルトの名無しさん
垢版 |
2018/05/29(火) 22:34:39.42ID:7/wI9AnP
Windows10で仮想デスクトップを使った場合
そのどちらのデスクトップに自作アプリがあろうとも
GetDC(0)って現在表示しているデスクトップを取得するんだな

子ウィンドウだけを仮想デスクトップに移動しておいて
その子ウィンドウにスクリーン・ショットを取らせようと考えていたんだが
所詮、仮想なんだ?
もしかしてGetDC(1)で仮想の方を取得できないかもやったが真っ白だた
2018/05/30(水) 07:12:33.93ID:tkaPgK/f
そらgetdcの引数は仮想デスクトップ番号じゃないかならなw
ivirtualdesktopmanagerじゃそういうのできないしどうしたらいんだろうな
2018/05/30(水) 07:34:07.95ID:VLAeNwdW
アクティブじゃない仮想デスクトップにあるUWPアプリとか
サスペンドするようにもなってるしDWM的に無理じゃないかしら
405デフォルトの名無しさん
垢版 |
2018/06/01(金) 04:15:17.48ID:LQ78zvmu
このスレがまだあってよかった。
いま時 Win32APIを使ってゴリゴリ書いてるんだけど、
RegisterClassEx 構造体の lpszClassName に指定する文字列って、
ローカルな変数で指定しても大丈夫? つまり、ウィンドウクラスの登録後に
文字列のメモリが解放されてしまうことになっても問題ない?
それとも文字列リテラル(静的文字列)じゃないとダメなの?
406405
垢版 |
2018/06/01(金) 04:17:20.03ID:LQ78zvmu
すまそ、変な書き方をした。
>RegisterClassEx 構造体の

WNDCLASSEX 構造体の、lpszClassNameフィールド。
2018/06/01(金) 04:33:40.82ID:p/Dhco7s
登録されたら、文字列の内容が記録されるから、ローカル変数で結構毛だらけ。
408405
垢版 |
2018/06/01(金) 08:42:09.72ID:LQ78zvmu
>>407
ご回答ありがとうございます、了解です(>∀<;)
2018/06/13(水) 19:44:17.74ID:lSIEjw1a
declspec dllexport使ってなかったから気づかなかったけど
x64で仕様変わったんだな
2018/06/13(水) 19:53:03.95ID:08JTaAbh
呼び出し規約が?
2018/06/13(水) 21:31:58.11ID:lSIEjw1a
x86だと先頭にアンダーバーが 後ろに@引数バイト数がついてたけど
それが無くなって関数名だけを勝手にエクスポートしてくれるみたいだ
2018/06/14(木) 00:37:48.44ID:CDT3Iung
https://msdn.microsoft.com/ja-jp/library/56h2zst2.aspx
これのことか。
2018/06/14(木) 02:49:39.56ID:zhf22BrY
Cの話なのね
2018/06/14(木) 09:33:49.07ID:0LV14Koi
++でも同じだよ。結局使うのはc形式なんだから
2018/06/16(土) 12:34:33.29ID:eoVHJNOw
Windows7でRemoveMenu関数を使ってコマンドプロンプトのクローズボックスを無効化したあと
タイトルバーからプロパティが開けなくなるようですが、コマンドプロンプトを再起動する以外で
回避する方法はありますか?
2018/06/16(土) 12:41:21.25ID:fQgtrTpq
cmdが内部で特殊な処理してない限りそんなこと起きないと思うんだけど・・
単にプロパティの位置が一番下だから間違えて消してるんじゃない?
2018/06/16(土) 13:09:31.09ID:Iux2O+3t
RemoveMenu呼び出しの周辺のコードさらせ。
2018/06/16(土) 16:12:48.28ID:IDYLbmOn
コマンドプロンプトやPSのコンソールの実装はかなり特殊だよ
1ウィンドウと同じに考えてはいけないと思ってる
2018/06/16(土) 16:48:55.99ID:fQgtrTpq
本当かよっと思って試しにやってみたら何のトラブルもなく閉じるだけ消えてプロパティ開けるぞ
2018/06/20(水) 14:47:03.73ID:XFilFgQX
LOGFONTのlfUnderlineを設定したフォントで文字を描画した際、下線が引かれますが、
この下線の位置や太さを決定するルーチンはありませんか?
点線なども引けるようにするため、lfUnderlineを使わずに自分で描きたいのですが、
単純に下端に描くと、メイリオだと全然違う位置になってしまいます。
421デフォルトの名無しさん
垢版 |
2018/06/20(水) 14:57:53.57ID:OnxnZInx
つまりアンダーラインが相対的にどこに来るかを指定してる属性を取りたいっていう質問でしょうか?
2018/06/20(水) 15:05:42.83ID:XFilFgQX
>>421
そういう感じです。
CreateFontIndirectで作成したフォントを使って文字を描画したあと、
その文字の位置に自分で下線を引きたいと思っています。
2018/06/20(水) 15:06:59.64ID:XFilFgQX
追記ですが、理想としてはlfUnderlineのときと
全く同じ位置や太さで描きたいと思っています。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況