トップページ⇒tech
1001コメント256KB

Win32API質問箱 Build116

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/30(水) 17:17:04.92
Win32APIについての質問はこちらへどうぞ。

■過去スレ
Win32API質問箱 Build115
http://toro.2ch.net/test/read.cgi/tech/1373671389/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0596デフォルトの名無しさん2014/01/26(日) 04:18:04.30
>OS側が勝手にkillしてくれるのかな?
これのどこがWin32APIの質問なんだよ
スレタイも読めない愚図か
0597デフォルトの名無しさん2014/01/27(月) 04:41:51.29
ここは削除依頼しなくても削除してもらえるから良いね
0598デフォルトの名無しさん2014/01/27(月) 04:53:31.64
>>594
ほんとにキチガイだな
別スレで散々指摘されたのに文章そのままでマルチか
0599デフォルトの名無しさん2014/01/27(月) 13:39:06.37
削除人はよ
0600デフォルトの名無しさん2014/01/27(月) 14:26:55.71
削除が趣味の運営さん、この書き込み削除しとけよw
0601デフォルトの名無しさん2014/01/27(月) 19:11:16.26
基地外が他人を基地外呼ばわりかw
本当に救いようがないなwww
0602デフォルトの名無しさん2014/01/27(月) 20:48:33.08
>>518 ああ、そのあたりは俺が質問で書いたレスだね。
なんで消されてるんだろう。

まぁ結局GCallocでマネージメモリを固定すれば
ポインタも取れるのでWIN32APIを使うときの問題はないことがわかった。

勉強になったよ
0603デフォルトの名無しさん2014/01/28(火) 02:48:37.60
質問です
http://stackoverflow.com/questions/20303380/virtualprotect-and-kernel32-dll-attempt-to-access-invalid-address
0604デフォルトの名無しさん2014/01/28(火) 02:55:38.19
>603
http://mimumimu.net/blog/2011/11/17/c%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%AD%E3%81%AB%E3%83%9E%E3%82%B7%E3%83%B3%E8%AA%9E%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%93%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%80%82/
0605デフォルトの名無しさん2014/01/28(火) 16:45:09.28
わかる方いたら教えてください。

WritePrivateProfileStringは、
書き込み中にiniファイルが破損したり、
ファイルが無くなるようなことは
あるのでしょうか?
要はアトミックかどうか知りたいです。

よろしくお願いします。
0606デフォルトの名無しさん2014/01/28(火) 17:27:34.85
>>605
分からないものを使うな気違い
0607デフォルトの名無しさん2014/01/28(火) 17:35:19.61
>>605
大丈夫だ、そういう心配はない。
つーかレジストリの前はINIファイルを使ってたから、INIファイルの操作にはレジストリと同レベルの信頼性が必要で
そのために通常のファイル操作用APIとは別にINIファイル操作用のAPIが用意された。






とかもっともらしいレス付けておけば愚図の>>605は鵜呑みにするんだろうなw
0608片山博文MZ無能 ◆T6xkBnTXz7B0 2014/01/28(火) 17:50:00.96
JK、書き込みロックで最悪でも書き込み失敗
0609デフォルトの名無しさん2014/01/28(火) 17:57:54.80
>>607 15点
>>608 25点

>>607は最後の一文により10点減点
嘘回答選手権はまだまだ続きます
どなたでも参加は自由
0610デフォルトの名無しさん2014/01/28(火) 18:47:20.50
ほんとお前らカスだなぁ。
死ねばいいのに
0611デフォルトの名無しさん2014/01/28(火) 18:56:52.24
hogeと書くと飛んでくるチョーセン人こそすぐに死ぬべき
0612片山博文MZ無能 ◆T6xkBnTXz7B0 2014/01/28(火) 19:05:35.93
http://ja.wikipedia.org/wiki/INI%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

破損するといった旨の記述はない。
昔のwinならバグあったかも。
0613デフォルトの名無しさん2014/01/28(火) 19:16:22.63
そーすはうぃきぺでぃあ()ですw
0614デフォルトの名無しさん2014/01/29(水) 09:33:52.14
このスレよりは信頼度高いだろ
0615デフォルトの名無しさん2014/01/29(水) 10:36:04.31
議論というものは勝ってはいけない
0616デフォルトの名無しさん2014/01/30(木) 17:02:04.53
かかってこいよ
0617デフォルトの名無しさん2014/01/30(木) 18:08:03.90
ピカ厨
0618デフォルトの名無しさん2014/01/31(金) 05:59:21.66
ピカ厨って何?
0619デフォルトの名無しさん2014/01/31(金) 12:55:14.61
シューベルトが気になって仕方がない人たちのこと
ピアノ五重奏曲「ます」とか聞いたことあんだろ
0620デフォルトの名無しさん2014/01/31(金) 15:39:05.98
ほら、滑った
0621デフォルトの名無しさん2014/01/31(金) 17:15:45.43
暗号化仮想ドライブを作りたいのですが、どうすればいいですか
0622デフォルトの名無しさん2014/01/31(金) 17:17:00.60
スレタイも読めないゴミは来なくていいから
0623デフォルトの名無しさん2014/01/31(金) 17:23:36.01
>>621
FreeOTFE
0624デフォルトの名無しさん2014/01/31(金) 17:25:43.55
自演乙
署名ドライバーが付属してないゴミとか薦めてどうするの?
死にたいの?お前
手伝った方がいい?
0625デフォルトの名無しさん2014/01/31(金) 17:45:54.04
刑法第202条(自殺関与及び同意殺人)
人を教唆し若しくは幇助して自殺させ、又は人をその嘱託を受け若しくはその承諾を得て殺した者は、6月以上7年以下の懲役又は禁錮に処する。
0626デフォルトの名無しさん2014/01/31(金) 17:47:28.38
いやぁ、こんな解説まで網羅してるMSDNってほんとすげーわ
0627デフォルトの名無しさん2014/01/31(金) 18:49:42.50
>>621
http://toro.2ch.net/test/read.cgi/tech/1385604796/
0628デフォルトの名無しさん2014/01/31(金) 20:00:26.55
バカは人未満なので自殺教唆は成立しない
0629デフォルトの名無しさん2014/01/31(金) 22:25:47.61
>>619
全然意味が分からない。
解説よろ。
0630デフォルトの名無しさん2014/01/31(金) 23:53:42.43
>>629
「そろそろ生本番の性交がしたい」
0631デフォルトの名無しさん2014/02/01(土) 01:39:58.85
性交?
0632デフォルトの名無しさん2014/02/01(土) 17:07:03.13
ピカ厨
0633デフォルトの名無しさん2014/02/01(土) 18:34:12.63
性交に成功した
0634デフォルトの名無しさん2014/02/01(土) 19:36:46.18
結果天文学的確率で生まれてきた勝者であるはずのお前らなのだが
0635デフォルトの名無しさん2014/02/01(土) 22:58:26.61
まあ頑張れや、明日があるさ。
0636デフォルトの名無しさん2014/02/02(日) 04:21:51.36
あしたのことは嫌いになってもAPIのことは嫌いにならないでくださいっ
0637デフォルトの名無しさん2014/02/02(日) 10:42:29.89
雑談中すみませんが質問です。

#include <stdio.h>

typedef unsigned int uint;
typedef unsigned char uchar;
extern int __stdcall VirtualProtect(void *, size_t, uint, uint *);

int main()
{
uchar x86[] = {
0x8B, 0x44, 0x24, 0x04, // mov eax, dword ptr [esp+4]
0x8B, 0x4C, 0x24, 0x08, // mov ecx, dword ptr [esp+8]
0x8B, 0x54, 0x24, 0x0C, // mov edx, dword ptr [esp+C]
0x0F, 0xAF, 0xC0, // imul eax, eax
0x0F, 0xAF, 0xC9, // imul ecx, ecx
0x0F, 0xAF, 0xD2, // imul edx, edx
0x03, 0xC1, // add eax, ecx
0x2B, 0xC2, // sub eax, edx
0xC3 // ret
};
uint dw;
fprintf(stdout, "%d\n", VirtualProtect(x86, sizeof(x86), 0x40, &dw)); //※ここ
fprintf(stdout, "%d\n", ((int (*)(int, int, int))x86)(3, 4, 5));
fprintf(stdout, "%d\n", ((int (*)(int, int, int))x86)(3, 3, 5));
return 0;
}

※ここ ← この行が無くても正常に実行出来てしまうのです。
実行時保護違反例外が出ると思ったのですが。><
0638デフォルトの名無しさん2014/02/02(日) 12:25:16.98
DEP?
0639デフォルトの名無しさん2014/02/02(日) 12:38:43.66
とりあえずそのVirtualProtectは使い方を間違えているからあっても意味はない
0640デフォルトの名無しさん2014/02/02(日) 12:40:31.40
A pointer an address that describes the starting page of the region of pages whose access protection attributes are to be changed.
All pages in the specified region must be within the same reserved region allocated when calling the VirtualAlloc or VirtualAllocEx function using MEM_RESERVE.
The pages cannot span adjacent reserved regions that were allocated by separate calls to VirtualAlloc or VirtualAllocEx using MEM_RESERVE.
0641デフォルトの名無しさん2014/02/02(日) 12:48:16.51
これでウイルスが作れるの?
0642デフォルトの名無しさん2014/02/02(日) 13:28:52.50
>>639
ここみてまねしたんです。><
http://mimumimu.net/blog/2011/11/17/Cコード中にマシン語を埋め込んで実行する。/
0643デフォルトの名無しさん2014/02/02(日) 13:42:05.06
片山博文MZ無能 ◆T6xkBnTXz7B0
0644デフォルトの名無しさん2014/02/02(日) 14:10:03.68
>>642
そのサイトに書いてあるのは全部でたらめ
三平方の定理の計算のアセンブラも間違えてるしω
0645デフォルトの名無しさん2014/02/02(日) 14:31:19.64
>>642みたいなゴミを陥れるための記事なのに・・・
ゴキブリホイホイみたいなものだ
そんなものに引っ掛かる奴は生きてる価値なし
スキルも知識もないゴミが何でできもしないことに手を出すのかね
0646デフォルトの名無しさん2014/02/02(日) 14:33:52.05
お前が書いたのか
見苦しい。去れ
0647デフォルトの名無しさん2014/02/02(日) 14:51:40.19
645が記事書いたのか
0648デフォルトの名無しさん2014/02/02(日) 15:06:25.07
>>643
そういうのは名前欄に書くものだ
0649デフォルトの名無しさん2014/02/02(日) 15:19:28.68
名前欄以外に書く奴の方がNGし甲斐がある
0650デフォルトの名無しさん2014/02/02(日) 19:13:11.79
普通に技術ある人じゃね?
けど下手にアセンブラ出来るともっと簡単にやれるのに余計な事やっちゃうやつっているよね
このスレのバカには無縁すぎる話題。。。
0651デフォルトの名無しさん2014/02/02(日) 19:49:18.65
俺なんてコードそっちのけで節分の豆見てよだれ垂らしてたぜ
アセンブラなんかより節分の豆のほうが重要なんだってばよ
0652デフォルトの名無しさん2014/02/02(日) 20:01:16.54
ここには他人を見下す屑しかいないのか?
0653デフォルトの名無しさん2014/02/02(日) 20:05:20.09
何で鏡を見た感想をここに書くんだ?
0654デフォルトの名無しさん2014/02/02(日) 20:55:04.37
FORMATETCのetcってなによ
0655デフォルトの名無しさん2014/02/03(月) 00:48:44.72
654:デフォルトの名無しさん :2014/02/02(日) 20:55:04.37 [sage]
FORMATETCのetcってなによ
0656デフォルトの名無しさん2014/02/03(月) 01:01:55.68
VirtualAllocだってばよ
0657デフォルトの名無しさん2014/02/03(月) 01:31:20.24
VirtualProtectは>>637が仕様調べずに見よう見まねてでっちあげたものだから
ブログ主を責めるのは筋違いだろ
0658デフォルトの名無しさん2014/02/03(月) 01:42:43.26
お前が書いたのか?
0659デフォルトの名無しさん2014/02/03(月) 01:55:29.11
違うよ
0660デフォルトの名無しさん2014/02/03(月) 01:58:12.44
謙遜すんなよクソ野郎
0661デフォルトの名無しさん2014/02/03(月) 02:40:10.78
機械語実行もrubyでやるほうが簡単っぽい
0662デフォルトの名無しさん2014/02/03(月) 12:20:59.58
他のwindowに隠されているwindowのhDCから、getPixelで正確な色情報を取りたいのだけど、
なにか解決策になりそうなアプローチないかな?

表示されていれば問題無く取れている。
隠れているから描画されていないのかと思って、
RedrawWindow(hwnd, 0,0, RDW_INVALIDATE | RDW_VALIDATE | RDW_UPDATENOW )
とか叩いてみたけど、効果がない模様。
RedrawWindowって、他に何か必要だったりする?
0663デフォルトの名無しさん2014/02/03(月) 12:31:23.51
ps を正しく評価している場合、隠されている領域なら
描画していないんじゃね?
0664デフォルトの名無しさん2014/02/03(月) 12:58:08.87
やっぱそうかな。
それが本来のwindowsの描画処理だし。

なんとか再描画させて、更新後のpixelデータを取りたいんだけど、なんか無いかな。
クライアント領域に、自分は表示されていると思わせる設定とかって、どうするんだろう?
0665デフォルトの名無しさん2014/02/03(月) 13:02:53.93
#include <stdio.h>

typedef unsigned int uint;
typedef unsigned char uchar;
extern int __stdcall VirtualFree(void *addr, size_t len, uint f);
extern int __stdcall VirtualAlloc(void *addr, size_t len, uint f, uint p);
extern int __stdcall VirtualProtect(void *addr, size_t len, uint f, uint *old);

#define PAGE_READONLY 0x02
#define PAGE_READWRITE 0x04
#define PAGE_EXECUTE_READWRITE 0x40
#define MEM_COMMIT 0x1000
#define MEM_RELEASE 0x8000
0666デフォルトの名無しさん2014/02/03(月) 13:03:37.10
int main(int ac, char **av)
{
uchar *code;
uchar x86[] = {
0x8B, 0x44, 0x24, 0x04, // mov eax, dword ptr [esp+4]
0x8B, 0x4C, 0x24, 0x08, // mov ecx, dword ptr [esp+8]
0x8B, 0x54, 0x24, 0x0C, // mov edx, dword ptr [esp+C]
0x0F, 0xAF, 0xC0, // imul eax, eax
0x0F, 0xAF, 0xC9, // imul ecx, ecx
0x0F, 0xAF, 0xD2, // imul edx, edx
0x03, 0xC1, // add eax, ecx
0x2B, 0xC2, // sub eax, edx
0xC3 // ret
};
uint dw;
int i;
code = (uchar *)VirtualAlloc(0, sizeof(x86), MEM_COMMIT, PAGE_READONLY);
fprintf(stdout, "%d\n", VirtualProtect(code, sizeof(x86), PAGE_READWRITE, &dw));
for(i = 0; i < sizeof(x86); ++i) code[i] = x86[i];
fprintf(stdout, "%d\n", VirtualProtect(code, sizeof(x86), PAGE_READONLY, &dw));
fprintf(stdout, "%d\n", ((int (*)(int, int, int))code)(3, 4, 5));
fprintf(stdout, "%d\n", ((int (*)(int, int, int))code)(3, 3, 5));
VirtualFree(code, 0, MEM_RELEASE);
return 0;
}

READONLY(EXECUTEなし)でも動きました。本当にありがとうございました。
0667デフォルトの名無しさん2014/02/03(月) 13:32:24.55
本当に隠されている領域なら効果がクライアント領域に引っ掛かる
0668デフォルトの名無しさん2014/02/03(月) 14:00:07.10
>>665-666
こういうゴミコードを継続的にばらまいて
ネット上の情報の総合的な質を下げてるのか
0669デフォルトの名無しさん2014/02/03(月) 14:00:14.50
>>666
システムのデフォルト設定によるけど、リンカーでDEPをオフにしないと実行できないだろ
0670uy2014/02/03(月) 14:40:55.99
はいわろ

require 'DL'
p DL::CFunc.new(["\x8B\x44\x24\x04\x8B\x4C\x24\x08\x8B\x54\x24\x0C\x0F\xAF\xC0\x0F\xAF\xC9\x0F\xAF\xD2\x03\xC1\x2B\xC2\xC3"].pack("P").unpack("l!").first, DL::TYPE_INT).call([10,2,5])
0671デフォルトの名無しさん2014/02/03(月) 14:42:40.63
以下、このスレは「なぜ Rubyは最強なのか?」
について語るスレですどうぞ
0672デフォルトの名無しさん2014/02/03(月) 14:43:40.25
おれのつくったさいきょうのぷろぐらむだから。
0673デフォルトの名無しさん2014/02/03(月) 19:23:56.12
iocccでやれ
0674デフォルトの名無しさん2014/02/03(月) 19:57:42.81
>>628
通報しました
0675デフォルトの名無しさん2014/02/04(火) 08:12:34.70
>>662>>664
そもそもビットマップが他と実質共有されてたりしたら取りようがない
コンパチなビットマップを割り当てたメモリDCを直接ウィンドウプロシージャにぶん投げるか、
勝手にレイヤードウィンドウに変換してしまおう(レイヤードウィンドウのビットマップは専用)。

前者は想定外のWM_PAINTとか発行して無理やり処理する事になるし、
後者はレイヤードウィンドウへの変換で挙動が変化するって副作用があるから注意
0676デフォルトの名無しさん2014/02/04(火) 13:47:24.96
>>675
0677デフォルトの名無しさん2014/02/04(火) 14:49:53.07
知らぬが仏なんだからそっとしといてやれ。
0678デフォルトの名無しさん2014/02/04(火) 17:38:06.98
スタックにあるコードを実行しても
ウィルススキャナには引っかからないんだな
0679デフォルトの名無しさん2014/02/05(水) 06:17:58.16
んー、WinAPIでは色とってこれないだろうけど
描画されてないところにあるウィンドウも
メモリ上のどこかにはその座標と色情報があるわけじゃん
世の中のどこかにはそれを行うソースコードかアプリはあるだろうけど探すのめんどっちぃ
0680デフォルトの名無しさん2014/02/05(水) 06:39:12.64
WM_PAINTが来ないと描画しないって話で
騙くらかす方法がLayered
0681デフォルトの名無しさん2014/02/05(水) 10:33:44.46
WM_PAINTとか何も関係ないから死ねって。

ほんとに知ったかしかいないのな
0682デフォルトの名無しさん2014/02/05(水) 14:24:44.43
>>679
色情報なんて描画直前にしかねーよ
0683デフォルトの名無しさん2014/02/05(水) 15:34:11.27
知らないならレスしないで下さい。ウザいだけです。
0684デフォルトの名無しさん2014/02/05(水) 15:42:37.47
犯罪目的としか思えない
0685デフォルトの名無しさん2014/02/05(水) 16:16:37.99
>>682
ハァ?wwww

グラボ OS プログラム ディスプレイ

それぞれ順序だてて説明してWinAPIはどっから色とってるか言ってみ
0686デフォルトの名無しさん2014/02/05(水) 16:17:54.04
Win32APIスレだから専門外ってことで許してやるか

ほんとにゴミしかいねえな
0687デフォルトの名無しさん2014/02/05(水) 17:18:46.71
Go meet God.
0688デフォルトの名無しさん2014/02/05(水) 17:35:36.22
知らないならレスしないで下さい。ウザいだけです。
0689デフォルトの名無しさん2014/02/05(水) 17:44:04.01
今日も雑魚しかいねーな
0690デフォルトの名無しさん2014/02/05(水) 19:05:15.15
>>662
できるとしたら
重なってる上のウインドウをわずかに透過属性持たせて
なおかつ下のウインドウのDCをダミーにすり替えておくってとこじゃないの
0691デフォルトの名無しさん2014/02/05(水) 19:17:24.33
自分がやるわけじゃないからどんなデタラメでも書けるなwwwwww
0692デフォルトの名無しさん2014/02/05(水) 22:27:56.25
もれは上手く逝ったので終了
0693デフォルトの名無しさん2014/02/05(水) 22:32:57.12
うまくいった方法だけ書いて去るのが本来のマナー
0694デフォルトの名無しさん2014/02/06(木) 02:00:00.59
>>693
ここでマナー求めんなし
0695デフォルトの名無しさん2014/02/06(木) 10:31:04.17
相互補助はマナーじゃない義務
■ このスレッドは過去ログ倉庫に格納されています