Win32API質問箱 Build123©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/ ※未承認広告※
Win32メッセージクラッカー簡単入力。
MsgCrack
https://github.com/katahiromz/MsgCrack 皆さんは、ダイアログの HWND に対し SetWindowLongPtr, GetWindowLongPtr を使用する場合
GWLP_USERDATA と DWLP_USER をどのように使い分けていますか? 使い分けもなにも
get してから & とか | とかして set してる エディットボックスにES_MULTILINEを付けると
Ctrl+Aですべて選択ができなくなってしまうのだけど、
これはなにか技術的な理由があってのことですか?
それとも、昔から修正されていないだけのバグですか? 642の追記ですが、ES_MULTILINEだけでなく、ES_READONLYを付けたときも、
同じようにCtrl+Aが効かなくなるようです。 >>644
つまり、ES_MULTILINEやES_READONLYはCtrl+Aに対応すべき状態ではない
というような技術的な理由があるわけではなく、
単にマイクロソフトが修正していない昔からのバグで、
サブクラス化などで対応しても問題ないものなんですよね? ctrl+aが全選択という統一ルールがないとかなんとか >>646
エディットボックスが常にCtrl+Aを扱っていないなら納得するんですが、
ES_MULTILINEやES_READONLYが付いているときだけ効かなくなるんです。 >>647
挙動としては認識通り
技術的な問題ではないのでサブクラスなりインスタンスなりのKeyDownイベントでSelectAll()して構わない
普通はついでにCopy()やCut()のショートカットキー処理もつけておく >>648
解説ありがとうございます。
エディットボックスの処理を信じずに、Ctrl+Aなどの動作を載せてしまいます。 CLIP STUDIO PAINTのようにツールっぽくする為にウインドウ全体を茶色に統一するようなWin32APIと言うのがありますでしょうか?
SKINかもしれないのですがSKINの仕方が解りません。
それとMediBang Paint Proのようにウインドウ全体でなくメニューとツールウインドウだけを茶色に統一する方法も
解りましたらお願いします。 >>652
ランサムだけなら誰でもできる。ランサムウェアと呼ぶから重要なことが抜けて伝わってしまう。 警察は実績が欲しく、子供は有名になりたかったらしいので
両者の思惑が一致した最高の形なんだろう >>654
重要なのはWindowsの穴をついてプログラムを実行できたところだからね。 穴ついてたのかよw
どうせこのbat実行してね、だろうと思ってたんだが違ったか エッチなビデオ.avi .bat
とかじゃないの? そういえば歴代OSの擬人化
みんな女の子だったよな
穴あって当然だな こないだの WannaCrypt ランサムの話なら SMB の穴だけど バッチファイルを書き換えられると危険が危ないと書いてある
朝日新聞の記事を読んだだけなのでよくわからないけど、
暗号化するプログラムをコピペで作ったんでしょう?
暗号化するバッチをコピペで作っただけなの?
どっちにせよ、穴は使ってない、ただのオナニーだった感じなんだが。 >>665
じゃあどうやってファイルを書き換えたんだよ? ランサムウェアよりも前に穴をつくマルウェアが出てきて、そのマルウェアを参考にしたのが、今回のランサムウェアだと思うが。 >>666
crypt.exe c:\windows\*.*
echo 暗号化しました金払え
こんな感じ。 >>670
nimdaで中学生逮捕って情報見つからん。ソースどっかある? いい加減にしろよ
引っ込みつかなくなった奴のマウント取って喜ぶような
小学生並みの神経してんのかお前は windows10のGDI描画をXP相当にするAPIは無いものかのう >>672
誰がnimdaで中学生逮捕なんて話をしてんだ?
脳みそ湧いてんの? >>675
visual style、runa style...いわゆる ThemeAPI の話?
なら、いわゆるスキンの類だと思うので API とか GDI とかの階層の話じゃないと思う。
カスタマイズでどうにかって話になるか、
ttps://www.japan-secure.com/entry/how_to_customize_the_windows_10_to_windows_xp.html
XP から theme.dll をぶっこ抜き・・・うーんワスレタ >>675
MFCとかを使っていいのなら、そういうライブラリは売ってるけどな。 >>675
GDIのAPI自体は変わってないと思うんだけど
Direct3Dを通さないで描画するとかならもう無理じゃね 自分のアプリだけならオーナードロー
OS全部なら方法わからん OS全体ならXP時代によくやってたtheme.dllの差し替えでいける・・・はずなんだが
XP時代でしか通用しない技なのかも知れんね なあに、グローバルフックすりゃなんとななるやろ(鼻ほじ どういうつもりでみんなGDI描画という言葉を使ってるのかわけわからんな GDI 描画と言えば FillRect とかの、HDC 用いるグラフィック描画で、
Windows 10 でも Windows 3.1 でも基本的に動作同じだよね。 >>692
違うよ
ルートウィンドウの扱いとかキャプチャしてみると違いが判る ウィンドウシステムの動作は GDI では規定されていないだろ。
以上、異論は無視する。 dwm.exe というデスクトップマネージャーのプロセスがGUI描画の番人になってるからXP再現は無理でしょ。 xpからファイル持ってきてosにぶちこむのができないからって
>>675ができないというわけじゃない Win10 SDK で作ると Windows 8.1 で動かないんだっけ? Win10SDKにまだ手を出していないんだけど、ようするに
Platform SDK、Windows SDK と思っていいんだよね? >>706
Win10SDKは directX SDK が変な統合のされ方しててインクルード警告が沢山でる。実害はない。 http://fast-uploader.com/file/7054567135089/
ウインドウを表示するだけのC++コードなんですが
ウインドウを消して終了しようとするとアクセス違反の例外が発生します
誰か解決方法を教えてください const WCHAR *className = L"MainWindow";
↓
static const WCHAR *className = L"MainWindow"; 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f) >>708
WM_NCDESTROY だか WM_POSTNCDESTORY が来るまで
window のインスタンスを消しちゃいけなかったような
PostQuitMessage の前に DestroyWindow しておけば良かったような VS2017でそのままビルド実行してみたけど例外など発生せずに正常に終了した
何か条件とかあるのかね とはいえ、
「ウイルスバスターを利用されている場合はエラーが出ます」
ってわけにもいかないだろうからこの先面倒だね。
健闘をお祈りします。 ウィルスバスター入れてても、その自作プログラム以外のソフトでは
そういう終了時に例外が出る問題は出ないんだよね?
とすると、そのプログラムが何かを踏んでるようにみえるけど >>708
>>710
while( GetMessage( &msg, NULL, 0, 0 ) < 0 )
じゃないのか GetMessageの戻り値が-1ならbreakもな ウイルスバスター側にしてみれば
DestroyWindow されてないのに SendMessage したら落ちたww
ということだろうな >>712
static LRESULT CALLBACK proc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
wc.lpfnWndProc = &proc;
これはどういうことかね、くわしく説明してもらおう Windows10タブレットで、画面の右端のメニュー(?)でディスプレイの明るさを変更できるじゃないですか。
あれをプログラムから変更できるようにしたいんですが、Win32APIで可能ですか? >>720
PowerWriteACValueIndex
難易度高めだよ >>721
ありがとうございます!
む、難しいですか・・・。
頑張ってみます! ソケット通信でUDPでrecv関数でデータ取ってるのですが
これrecvでデータを取る前に何バイト溜まってるか確認するAPIあったら教えてください >>723
.netではioctlsocketでFIONREADを読んでるっぽいのでそれでいんじゃね #include <thread>
using namespace std;
・・・
SOCKET Sock = accept( ・・・ );
だとエラーになるんですが、
threadをincludeしない、あるいはusing namespace stdを書かないと、
正常なソケットを返します。
なぜこんなことが起こるのでしょうか?? >>727
でも、エラーもなくコンパイル通りますし、VS上で定義を参照しても、
いずれの場合もWinSockのaccept()が参照されます。
同じWinSockのAPIでbind()がstd::bind()と衝突することはありましたが、
今回のaccept()はそれとは違う感じです。 >>728
エラーになる最小のコードを晒さんとなんとも言えんわ >>729
コンパイルエラーはありませんが、
実行時にaccept()がエラーを返します。
>>730
#include <winsock.h>
#pragma comment( lib, "wsock32.lib" )
#include <thread>
using namespace std;
int main()
{
WSADATA WSAData;
WSAStartup( MAKEWORD( 1, 1 ), &WSAData );
SOCKET SockListen = socket( AF_INET, SOCK_STREAM, 0 );
SOCKADDR_IN Addr;
Addr.sin_family = AF_INET;
Addr.sin_addr.s_addr = htonl( INADDR_ANY );
Addr.sin_port = htons( 1234 );
bind( SockListen, ( SOCKADDR* )&Addr, sizeof( SOCKADDR ) );
listen( SockListen, 1 );
SOCKET SockAccept = accept( SockListen, NULL, NULL );
closesocket( SockAccept );
closesocket( SockListen );
WSACleanup();
return 0;
}
これが、accept()がエラーを返すコードです。
#include <thread>かusing namespace std;のいずれか、あるいは両方をコメントアウトすると
正常なソケットを返します。
IDEはVisual Studio Express 2015 for Windows Desktopです。 自己解決しました!
std::bind()とwinsockのbind()が入れ替わってました!
::bind()とすればaccept()もエラーを返さなくなりました。
以前はエラーが出たと思ったのですが、うっかりしてました・・・。
失礼しました! bindというマクロが定義されてるライブラリがあって困ったことがあるな >>728
名前衝突のときエラーメッセージみるのは
リンク時だろ >>731
>using namespace std;
そもそもコレできるけど関数名書かないならやらない方がいい エンコードした動画データをWinSockを使ってUDPで送信しているんですが、
通信速度が妙に制限されている感じがします。
送信PC → (有線LAN GbE) → Wi-Fiルーター → (無線11ac) → Winタブ
有線の方はGbEなのに、データ量を増やすと8Mbpsあたりで頭打ちになり、
無線の方も11acなのに3Mbpsあたりで受信が頭打ちになります。
(いずれもタスクマネージャーのパフォーマンスタブで確認)
無線の方は最初もっと酷くて、調べたらワイヤレスアダプタが省電力モードになっていたので、
これを解除すると改善はしたのですが、それでも上記の通り3Mbps程度です。
実効帯域は理論値には及ばないとは思いますが、それにしても酷くないですか??
何かリミッターがかかっているのでしょうか?
それともこんなもんでしょうか? ■ このスレッドは過去ログ倉庫に格納されています