Win32API質問箱 Build78
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/03/29(日) 10:16:17やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn2.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
Win32API質問箱 Build77
http://pc12.2ch.net/test/read.cgi/tech/1235494464/
0002デフォルトの名無しさん
2009/03/29(日) 10:16:58- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/
http://msdn.microsoft.com/en-us/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
書籍
- Advanced Windows 第5版
http://www.amazon.co.jp/dp/4891005920
0003デフォルトの名無しさん
2009/03/29(日) 10:17:3976 ttp://pc11.2ch.net/test/read.cgi/tech/1233622578/
75 ttp://pc11.2ch.net/test/read.cgi/tech/1231423602/
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
0004デフォルトの名無しさん
2009/03/29(日) 10:18:2049 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
0005デフォルトの名無しさん
2009/03/29(日) 10:19:0224 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0006デフォルトの名無しさん
2009/03/29(日) 10:19:43http://www.google.com/
下記サイトは、違っている事もあるので参考程度にしよう!
流れを参考にしながら、APIの仕様を読めば使えるはず。
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/
●Win32API(C言語)
http://www.geocities.jp/ky_webid/win32c/
0007デフォルトの名無しさん
2009/03/29(日) 14:59:08言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0008デフォルトの名無しさん
2009/03/29(日) 15:02:06,,-、、 {:{
《 ≫/⌒ヽ⌒H⌒/`ヽ. これは1乙ではなく
====7/⌒>‐、 ̄ ̄` 丶 、/ヽ、 _ ツインテールです
/:r‐-(f⌒ヽ;:_::l\ー_、 ヽ/⌒L/ハY _
, ':./: >::;:'´ゝ'´::: /乂__,イ⌒) Y´`{h_}レ'/}} _ __
l/: :, :ヘ/:::/::////:::::!:::|:::::::( ヽ l/い,κ≦三二__ ̄ミヽ
,.':イ/ .//::::ム〈// {|::: |!: | :: !!}/〉 {、_しゝ=ニ二二二二ミ;ミ }:::}
/: :Y !||:::::::|心` {ト、:|_!:i::::|l::::ト〈`l { 〈:::リ )::ノノ
,':λ { l」」_|じリ .二:!_イトl!|こレ}: :リ‐〈::;' /:/
i: ハ: ', .{ r "了うぅァリ{こ.}ノ/〈_ノ/ //
!::{ ヽ:.\/ハ. ゝ_;ノ:ゝ'Lr_<ヽ::;::' //
',::ヽ. .}::〈〃ハ ヽ <://:リ7 ノ:/ //
\ ソ:::: }ヽ : ゝ .. _ ,. ' ラ-=='´ ,.:' : / __
/:/´\ー'´r‐'/`ー--、__ム`i {{ ; :.{ .イ'⌒ヽ.、
/:::λ{{ ::::/:ムイ:::: f´ .::::ゝ. 弋':込、__,、-=彡' }:}
. /::::/ r) }}` /彡'´ 9 | / 八  ̄ ̄ ̄ ̄ ̄ /,'
. /::::/ .(_{{./ ,ィi /=!__,ノ/.\ /:/
/::::;::イ // | ´ └=ァ /三三ニ/ _> 、 / :〃
0009デフォルトの名無しさん
2009/03/29(日) 20:19:06/ // / }\. │ヘ
/ / // `│ ∧
/ / // / / ヽ| :∧
ノl f' /// / /_厶 \| ',
/イ| |//, / // //'´ ̄|lヽ \| }
_ / {{ | |//// // / jハ \j │
`  ̄ ノ '|. | / __/ハ __ \ | |
/ /ハ | _x==ミ ィ= =x._ イ ∧
/ 〃ハ | `´ `刈 ハ \
{ /'/ ハ. | j f^1 / |‖ ハ \ノ
∨// 小. | ` j | j |‖ | } ヽ
/'´ /ノ ,l l \ ー _一ノ ノ'´/ノ| ド、__ _ノ 花見に行く うふふ
〈_,斗-‐'´| ∨ |丶、/´ ̄ ̄ //ノ| │ `ヽ、
/,>=-、 | | {. / _ イ |│ | /⌒\
/厶 \∧ | \l r< ̄/ __|│ |-‐' / ̄`|
| \ | ヽ !/}│ {_ `7 {_ |│ | / |
| \ │ |_ノ | い/ /│| j'´ │
| \{ |\ | ∨ /ヘ.|/ / !
} \、 :| | V ̄ ̄ \/ / __/
0010デフォルトの名無しさん
2009/03/29(日) 21:18:21クズが
0011デフォルトの名無しさん
2009/03/29(日) 21:19:380012デフォルトの名無しさん
2009/03/29(日) 21:24:430013デフォルトの名無しさん
2009/03/29(日) 22:32:37/´ ̄`ヽ /: : : \_____/: : : : ヽ、
,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
/: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
,. -──「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
/: :.,.-ァ: : : |: : : : : : : : : :\: : : : :: : : :ヽ \ /: : : :/
 ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i / /: : : : :/
/: : ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/ /: : : : :/ 、
. /: : / . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : | /: : : : :/ |\
/: : ィ: : : : :.i: : | \!___/ ヽ:: : : : : : :\|:.:.:.:/:! ,': : : : / |: : \
/ / !: : : : :.ト‐|- ヽ \: : : : : l::::__:' :/ i: : : : :{ |: : : :.ヽ
l/ |: : :!: : .l: :| \: : : l´r. Y {: : : : :丶_______.ノ: : : : : :}
l: : :l: : :ト、| 、___,ィ ヽ: :| ゝ ノ '.: : : : : : : : : : : : : : : : : : : : : : /
|: : :ト、: |: :ヽ ___,彡 ´ ̄´ ヽl-‐' \: : : : : : : : : : : : : : : : : : イ
!: :从ヽ!ヽ.ハ=≠' , ///// ///u /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
V ヽ| }/// r‐'⌒ヽ イ〉、
ヽ、______ー‐‐' ィ´ /:/:7rt‐---、 こ、これは>>1乙じゃなくて
ィ幵ノ ./:/:./:.! !: : : : :!`ヽ ポニーテールなんだから
r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\ 変な勘違いしないでよね!
/: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\
0014デフォルトの名無しさん
2009/03/29(日) 22:32:460015デフォルトの名無しさん
2009/03/29(日) 22:58:04(*・_・*)ポッ
0016デフォルトの名無しさん
2009/03/29(日) 23:01:370017デフォルトの名無しさん
2009/03/29(日) 23:11:07* ポッ
0018デフォルトの名無しさん
2009/03/30(月) 00:04:12俺の
A 熱い
P ペニス
I インプット(挿入)
してやるぜ
0019デフォルトの名無しさん
2009/03/30(月) 00:23:530020デフォルトの名無しさん
2009/03/30(月) 00:25:08悲しすぎる
0021デフォルトの名無しさん
2009/03/30(月) 00:26:070022デフォルトの名無しさん
2009/03/30(月) 00:33:24無職のおっさんはハローワーク行けよ
0023デフォルトの名無しさん
2009/03/30(月) 00:36:08input=入力 insert=挿入だよな
0024デフォルトの名無しさん
2009/03/30(月) 01:58:170025デフォルトの名無しさん
2009/03/30(月) 03:00:30歴史は繰り返す
0026デフォルトの名無しさん
2009/03/30(月) 03:11:06って読むの?
0027デフォルトの名無しさん
2009/03/30(月) 10:55:24その中のフォーカスがあるウィンドウハンドルが取りたいんですが、APIは何になるのでしょうか?
親のハンドル取得→子ウィンドウハンドルを1つずつとって調べればいいと思うんですが、
よく分からなくてお願いします。
0028デフォルトの名無しさん
2009/03/30(月) 11:17:49WM_SETFOCUSやWM_KILLFOCUSがきたやつが親に通知して覚えておけばいいと思うけどな。
0029デフォルトの名無しさん
2009/03/30(月) 11:34:100030デフォルトの名無しさん
2009/03/30(月) 12:06:42継承はinheritance
inheritは「継承する」という動詞
0031デフォルトの名無しさん
2009/03/30(月) 12:07:400032デフォルトの名無しさん
2009/03/30(月) 12:44:100033デフォルトの名無しさん
2009/03/30(月) 13:29:350034デフォルトの名無しさん
2009/03/30(月) 20:16:16そのプロセスの実行ファイルとモジュールのファイルパスを確実に取得する方法を考えています。
今のところ、周期的にEnumProcesses()(プロセスID取得メソッド)から追ってパスの取得には成功
しましたが、一瞬で終わる実行ファイルなどの場合は、拾うことが不可能でした。
実行ファイルがEnumProcesses()の呼ばれる間に終了してしまうためだと思います。
環境はVisual Studio2008 になりネイティブで作成しているため、.Net Frameworkは使用できません。
Win32 APIなどで実行可能でしたら幸いです。
よろしくお願いしますm(_ _)m
0035デフォルトの名無しさん
2009/03/30(月) 20:19:03実際にやったことないので嘘かもしれないが
グローバルフックで CreateProcess のログを取る
0036デフォルトの名無しさん
2009/03/30(月) 20:21:29>プロセスが起動した場合、
>そのプロセスの実行ファイルとモジュールのファイルパスを確実に取得する方法
なんでこんなことしたいのか気になるな
0037デフォルトの名無しさん
2009/03/30(月) 20:27:110038デフォルトの名無しさん
2009/03/30(月) 20:27:15ウインドウを作成しないプロセスまで捕捉するのは、簡単な方法では無いと思う。
0039デフォルトの名無しさん
2009/03/30(月) 20:32:40自由にソフトウェアのインストールができないPCで使うんだろう
一瞬で終わる実行を補足したいということから
CUIコマンド系の実行も調べたいんだろう
スパイですな
同僚に仕掛けるのか
出向先に仕掛けるのか
客先に仕掛けるのか
ろくなもんじゃねえ
0040デフォルトの名無しさん
2009/03/30(月) 20:39:22Ntほげほげにごにょごにょしちゃえばいいのかな
004134
2009/03/30(月) 20:54:29ありがとうございます。 調べてみます。
何か取っ掛かりが欲しかったので助かりました(^−^
>>39
純粋に仕事で必要なだけですよ。
2日ほど悩んでたんで、解決策か取っ掛かりが欲しかっただけです。
0042デフォルトの名無しさん
2009/03/30(月) 21:10:000043デフォルトの名無しさん
2009/03/30(月) 22:46:36イベントログに出力されたコマンド実行履歴を取り出して
ごにょごにょしたいのですが
この辺をすべてW32APIで処理できますか
0044デフォルトの名無しさん
2009/03/30(月) 22:50:03監査でプロセスのがあったような気がする
0045デフォルトの名無しさん
2009/03/30(月) 22:53:47イベントログは普通にWin32から読み書きできる。
ポリシーをいじるのは出来るだろうけど、知らん。
0046デフォルトの名無しさん
2009/03/31(火) 01:35:120047デフォルトの名無しさん
2009/03/31(火) 01:42:010048デフォルトの名無しさん
2009/03/31(火) 02:44:090049デフォルトの名無しさん
2009/03/31(火) 02:58:202日悩んだ程度で質問するな
一週間悩んでからにしろ
0050デフォルトの名無しさん
2009/03/31(火) 08:17:24「悩む」ってのはボーッとしてることじゃにだろうなw
0051デフォルトの名無しさん
2009/03/31(火) 10:47:350052デフォルトの名無しさん
2009/03/31(火) 10:52:480053デフォルトの名無しさん
2009/03/31(火) 11:01:360054デフォルトの名無しさん
2009/03/31(火) 13:25:33ウインドウが無効状態から有効状態に移るとツールチップが表示されなくなります。
何故でしょう???
0055デフォルトの名無しさん
2009/03/31(火) 14:03:470056デフォルトの名無しさん
2009/03/31(火) 14:50:14既に名前付きミューテックスオブジェクトが存在していて所有権を得ることができなくても、
CreateMutexが有効なハンドルを返すのですが、どうすれば呼び出し元が所有権を得たかどうか判断できるのでしょうか。
0057デフォルトの名無しさん
2009/03/31(火) 14:54:240058デフォルトの名無しさん
2009/03/31(火) 15:05:400059デフォルトの名無しさん
2009/03/31(火) 15:10:22CreateMutexの呼び出し元が所有権を取得したかどうかまで(僕では)判断することができませんでした。
WaitForSingleオブジェクトを使うにしても、最初に所有権を取得できたかどうかでReleaseMutexを呼ぶべき回数が違ってくるので、
結局呼び出し元が所有権を取得したかどうか判断できないと話にならないと思うのですが・・・orz
0060デフォルトの名無しさん
2009/03/31(火) 15:12:060061デフォルトの名無しさん
2009/03/31(火) 15:14:180062デフォルトの名無しさん
2009/03/31(火) 15:14:44もし所有権を持っていなければ当然開放する必要は無い
0063デフォルトの名無しさん
2009/03/31(火) 15:16:390064デフォルトの名無しさん
2009/03/31(火) 15:16:520065デフォルトの名無しさん
2009/03/31(火) 15:19:56なわけねーだろバカ
0066デフォルトの名無しさん
2009/03/31(火) 15:20:26久々に馬鹿を見た
0067デフォルトの名無しさん
2009/03/31(火) 15:41:09>>63
もちろん既存であるにせよ新しく作成したにせよ、
CreateMutexが有効なハンドル戻せば、閉じなければいけないことはわかっておりました。
006854
2009/03/31(火) 15:56:55ツールチップが表示されないのかな〜〜? 誰もわからないんだな〜〜〜
知らないのかな〜〜〜〜?
0069デフォルトの名無しさん
2009/03/31(火) 15:57:37007054
2009/03/31(火) 16:03:080071デフォルトの名無しさん
2009/03/31(火) 16:31:01CreateMutexで所有権の取得ができなかった場合、WaitForSingleObjectの呼び出しの前に
他プロセスがミューテックスオブジェクトの所有権を解放すると、
零時間待機ではCreateMutexの呼び出しで所有権を取得したかのように錯覚してしまいますね。
0072デフォルトの名無しさん
2009/03/31(火) 16:32:100073デフォルトの名無しさん
2009/03/31(火) 16:37:530074デフォルトの名無しさん
2009/03/31(火) 17:02:560075デフォルトの名無しさん
2009/03/31(火) 17:24:50do bResult = GetOverlappedResult(pThis->devInfo.winUSBHandle, &pThis->ol, &dw, TRUE);
while(!bResult);
0076デフォルトの名無しさん
2009/03/31(火) 17:26:01下二行のdo while文はとりあえず今使ってるwhile待ち。
0077デフォルトの名無しさん
2009/03/31(火) 18:05:38初めて知ったw
0078デフォルトの名無しさん
2009/03/31(火) 18:16:25おれも。
0079デフォルトの名無しさん
2009/03/31(火) 18:41:310080デフォルトの名無しさん
2009/03/31(火) 19:03:21そっちは知ってんだよw
0081デフォルトの名無しさん
2009/03/31(火) 19:13:44へえーそうだったのかー知らなかったよー(棒読み)
0082デフォルトの名無しさん
2009/03/31(火) 19:16:080083デフォルトの名無しさん
2009/03/31(火) 19:18:23C言語だけでも25年以上使ってますが何か
0084デフォルトの名無しさん
2009/03/31(火) 19:19:39C99の新機能なんかでもよく思うんだけど。
0085デフォルトの名無しさん
2009/03/31(火) 19:24:12大学や専門学校の授業でC言語を教わったような人なら知ってるかもしれないけど
0086デフォルトの名無しさん
2009/03/31(火) 19:27:510087デフォルトの名無しさん
2009/03/31(火) 19:30:39その理屈だと↓のコンパイルが通らないとおかしい
int main() return printf("test");
0088デフォルトの名無しさん
2009/03/31(火) 19:35:370089デフォルトの名無しさん
2009/03/31(火) 19:36:21本当はdo while文を知らなかった癖にw
0090デフォルトの名無しさん
2009/03/31(火) 19:37:580091デフォルトの名無しさん
2009/03/31(火) 19:39:50#define } END
ってソースを見たことがあるな・・・
0092デフォルトの名無しさん
2009/03/31(火) 19:40:500093デフォルトの名無しさん
2009/03/31(火) 19:42:05宣言は常にブラケット必須、命令文は中身が一文ならブラケットがなくてよい
と思ったんだが……
0094デフォルトの名無しさん
2009/03/31(火) 19:42:06リソースファイルも知らないの?だっせー
0095デフォルトの名無しさん
2009/03/31(火) 19:44:20int main(void);
↑
ブラケットないね
セミコロンがついてるけど、これは空文かい?
0096デフォルトの名無しさん
2009/03/31(火) 19:45:130097デフォルトの名無しさん
2009/03/31(火) 19:48:180098デフォルトの名無しさん
2009/03/31(火) 19:49:31それってどういうときに使うの?
逆は見たことがある
0099デフォルトの名無しさん
2009/03/31(火) 19:51:37特にC/C++はマクロの副作用が大きいし、一文でもブラケットを付ける癖をつけた方が余計なバグを生みにくい
0100デフォルトの名無しさん
2009/03/31(火) 20:27:44宣言じゃなくて定義ね。
C99の新機能、未だに良く知らないw
//コメントが追加、くらいしかしらん
0101デフォルトの名無しさん
2009/03/31(火) 21:27:54>一文でもブラケットを付ける癖をつけた方が余計なバグを生みにくい
人それぞれだが俺もそう思う
0102デフォルトの名無しさん
2009/03/31(火) 23:23:22別言語から入ってきた馬鹿がよくやる
0103デフォルトの名無しさん
2009/03/31(火) 23:27:16結局同期使うことにしたからまあいいけどねw
俺は特に言語を習ったことがあるとかではない(ぐーぐる先生で学んだ)けど
if elseで使えるんならいけるだろとdo whileで使ってみたら使えた…、と。
0104デフォルトの名無しさん
2009/04/01(水) 00:01:56それは #define begin { の場合でしょ?
0105デフォルトの名無しさん
2009/04/01(水) 00:08:55ツッコミのネタばらしをするなよw
0106デフォルトの名無しさん
2009/04/01(水) 00:33:550107デフォルトの名無しさん
2009/04/01(水) 12:44:01こんなのあったのか・・・今まで知らなかった
0108デフォルトの名無しさん
2009/04/01(水) 15:23:180109デフォルトの名無しさん
2009/04/01(水) 15:30:130110デフォルトの名無しさん
2009/04/01(水) 15:31:060111デフォルトの名無しさん
2009/04/01(水) 15:32:020112デフォルトの名無しさん
2009/04/01(水) 15:35:16しかし、コードの後方互換性が著しく失われるなw
0113デフォルトの名無しさん
2009/04/01(水) 15:37:080114デフォルトの名無しさん
2009/04/01(水) 15:47:55do whileで十分な所に変な拡張入れるなよw
0115デフォルトの名無しさん
2009/04/01(水) 15:50:030116デフォルトの名無しさん
2009/04/01(水) 16:08:340117デフォルトの名無しさん
2009/04/01(水) 17:36:390118デフォルトの名無しさん
2009/04/01(水) 19:04:50おまwwwエイプリールフールだからって変なウソ付くんじゃねぇwwwwww
試しもせずに言いふらしちまったじゃねぇかwwwwwwww
0119デフォルトの名無しさん
2009/04/01(水) 19:09:20今日中なら、言いふらした相手に「今日は何の日だ?」って言えば許されるんじゃねww
0120デフォルトの名無しさん
2009/04/01(水) 19:18:34|___ミ⌒ヽペタン
| ⌒)ノ ペタン
._ノ ) ((
| .・∀| ( 嘘ヽ
|__| | ̄ ̄ ̄|
/ > . | |
""""""""""""""""""""
0121デフォルトの名無しさん
2009/04/01(水) 19:18:34その論調でいけば俺も>>119に騙されてしまった事になるのかもしれんが。
0122デフォルトの名無しさん
2009/04/01(水) 19:19:02エイプリールフール以前に2ちゃんの情報を鵜呑みにするお前が悪い
0123デフォルトの名無しさん
2009/04/01(水) 19:21:000124デフォルトの名無しさん
2009/04/01(水) 19:34:410125デフォルトの名無しさん
2009/04/01(水) 20:31:370126デフォルトの名無しさん
2009/04/01(水) 20:46:000127デフォルトの名無しさん
2009/04/01(水) 23:55:52ありがとうございます
0128デフォルトの名無しさん
2009/04/02(木) 01:36:15#define until while!
0129デフォルトの名無しさん
2009/04/02(木) 10:14:54印刷関係がまだできていません。どうしたらよいでしょうか?
サンプルコードなど、ありませんか。
0130デフォルトの名無しさん
2009/04/02(木) 10:16:300131デフォルトの名無しさん
2009/04/02(木) 10:18:12とりあえずDPI気にしないでプリントしてみそ
0132デフォルトの名無しさん
2009/04/02(木) 15:19:46目的は
録画サーバの空き時間にエンコードを行い
録画が始まったら直ちにエンコードしているプロセスを一時停止させ
録画終了したらエンコードの再開させるためです
よろしくお願いします
0133デフォルトの名無しさん
2009/04/02(木) 15:23:480134デフォルトの名無しさん
2009/04/02(木) 15:24:41使えるかどうかわからん。
0135デフォルトの名無しさん
2009/04/02(木) 15:28:440136132
2009/04/02(木) 15:56:09PsSuspend
ttp://technet.microsoft.com/en-us/sysinternals/bb897540.aspx
0137デフォルトの名無しさん
2009/04/02(木) 16:02:500138デフォルトの名無しさん
2009/04/02(木) 16:09:40Windows API の話じゃあないか。
0139デフォルトの名無しさん
2009/04/02(木) 16:24:120140デフォルトの名無しさん
2009/04/02(木) 16:29:290141デフォルトの名無しさん
2009/04/02(木) 17:21:35猫でものサイトより高度な内容を希望。
0142デフォルトの名無しさん
2009/04/02(木) 17:28:24スレ違いな気が
言語と開発ツールは何なのさ?
0143デフォルトの名無しさん
2009/04/02(木) 17:35:24VB#
VisualStudio2012Express
0144デフォルトの名無しさん
2009/04/02(木) 17:36:01ttp://msdn.microsoft.com/en-us/library/aa139722.aspx
0145デフォルトの名無しさん
2009/04/02(木) 17:36:082012年までに作っておく
0146デフォルトの名無しさん
2009/04/02(木) 17:47:38・・・スマン、もう4/1じゃないんだった
0147デフォルトの名無しさん
2009/04/02(木) 18:45:590148デフォルトの名無しさん
2009/04/02(木) 18:47:19本当に作るんだろうな?
そう書いたからには実行してもらうよ
0149デフォルトの名無しさん
2009/04/02(木) 19:05:13ポイントとなるAPIだけ提示しとく。
形の自由なウィンドウ・・・SetWindowRgn
半透明・・・SetLayeredWindowAttributes
0150デフォルトの名無しさん
2009/04/02(木) 19:06:24<frameset>
<frame src="http://msdn.microsoft.com/en-us/library/aa139722.aspx">
</frameset>
0151デフォルトの名無しさん
2009/04/02(木) 19:44:20UpdateLayeredWindowだろ半可通が知ったような口を聞くな
0152デフォルトの名無しさん
2009/04/02(木) 19:53:432000以降でしか使えないようなAPIを知ってるぐらいで自慢するなカス
0153デフォルトの名無しさん
2009/04/02(木) 20:14:560154デフォルトの名無しさん
2009/04/02(木) 20:16:380155149
2009/04/02(木) 20:22:41確かに調べてみたら、UpdateLayeredWindow の方がよい情報が多かった。
俺も不勉強だったよ、済まなかった。
0156デフォルトの名無しさん
2009/04/02(木) 20:46:05ウインドウ作ったらちらついて使い物にならなかった
WM_ERASEBKGNDとかで何とかなったのかな?
0157147
2009/04/02(木) 21:32:16例えば、画像の透過ピクセル以外の形のウィンドウを作りたい時は
ビットマップからリージョンを作ってSetWindowRgnをする。更に半透明を反映させるために
UpdateLayeredWindowをする。ということでいいでしょうか?やってみます。
タイトルバーなどは、リージョン設定時にクライアント領域だけ収まるように設定すればいいんですか?
0158デフォルトの名無しさん
2009/04/02(木) 21:46:02それはお前の書き方が悪いだけだろ。
0159デフォルトの名無しさん
2009/04/02(木) 21:52:430160デフォルトの名無しさん
2009/04/02(木) 22:06:30透明度を設定するならレイヤードウィンドウじゃないと無理だけどな
0161デフォルトの名無しさん
2009/04/02(木) 22:20:20それってそんなに複雑なことをする必要があるかな?
単にエンコードプロセスを最低レベルの優先度で実行してればいいんじゃないのかな?
かな?
0162デフォルトの名無しさん
2009/04/02(木) 22:25:370163デフォルトの名無しさん
2009/04/02(木) 22:33:160164デフォルトの名無しさん
2009/04/02(木) 22:49:330165デフォルトの名無しさん
2009/04/02(木) 23:01:580166デフォルトの名無しさん
2009/04/02(木) 23:07:370167デフォルトの名無しさん
2009/04/02(木) 23:07:43WMI
0168デフォルトの名無しさん
2009/04/03(金) 00:28:23GetChipsetMotherBoardCPUNameToka();
0169デフォルトの名無しさん
2009/04/04(土) 00:38:39OPEN_ALWAYSでCreateFileを呼び出して、そのあとに
SetFilePointer(FILE_END)を呼び出したら、文字列を追加書き
込みできるようになったのですが、なぜか文字列の表示がおか
しくなります。
普通だったら、abcと表示されるはずなのに、a b cのように
文字間に空白が入ってしまうのです。
何が原因でしょうか。
0170デフォルトの名無しさん
2009/04/04(土) 00:40:35Unicode?
0171デフォルトの名無しさん
2009/04/04(土) 01:13:470172169
2009/04/04(土) 01:38:22おっしゃる通り、UNICODEで実行しています。
とりあえず、コードを載せます。
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
HANDLE hFile;
TCHAR data[]=TEXT("abc\r\n");
DWORD dw;
hFile=CreateFile(TEXT("file.txt"), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile==INVALID_HANDLE_VALUE){
printf("error\n");
return 0;
}
SetFilePointer(hFile, 0, NULL, FILE_END);
WriteFile(hFile, data, sizeof(data), &dw, NULL);
return 0;
}
これを実行してみると、一回目は普通にabcと保存されます。
そして、もう一度実行してみると、一回目の文字列の後ろに
abcは追加されているのですが、何故かa b c a b c のように
なってしまいます。
本当は、
abc
abc
と表示されてほしいのですが、そうなってくれません。
メモ帳で中身を確認しているのですが、それが問題でしょうか。
0173デフォルトの名無しさん
2009/04/04(土) 01:42:32Unicodeで開いてみ
0174169
2009/04/04(土) 02:01:28UNICODEで保存すると色々と複雑になるようなので、
ANSI(ASCII?)で保存するようにしたほうがよいので
しょうか。
あと、先ほどのコードで改行が、
abc
abc
のようになったのですが、2行目の先頭に空白が
あるのがわかりません。
改行は、\r\nでいいはずなのですが。
0175デフォルトの名無しさん
2009/04/04(土) 02:06:20Win32APIなんて使わず<stdio.h>と<tchar.h>で、_fputtsや_ftprintfなんかを使ったほうが楽だと思うよ。
0176デフォルトの名無しさん
2009/04/04(土) 02:08:39とりあえずバイナリエディタで確認しろ
0177169
2009/04/04(土) 02:31:55バイナリエディタで確認したところ、
abc\r\nを表すのが、
61 00 62 00 63 00 0D 00 0A 00
であることがわかりました。
この後には、00 00があったのですが、どうやらこれはヌル文字のようです。
WriteFileにsizeof(data)としていたため、ヌル文字も保存されてしまったようです。
よって、sizeof(data) - sizeof(TCHAR)としたところ、今度はUNICODEでメモ帳を
開かなくても
abc
abc
と表示されるようになりました。
むしろ、ありがたい結果なのですが、いったいなぜ...?
0178デフォルトの名無しさん
2009/04/04(土) 02:37:130179デフォルトの名無しさん
2009/04/04(土) 02:44:130180デフォルトの名無しさん
2009/04/04(土) 02:49:370181デフォルトの名無しさん
2009/04/04(土) 03:01:460182デフォルトの名無しさん
2009/04/04(土) 03:07:550183169
2009/04/04(土) 03:08:5161 62 63 0D 0A
のような結果を確認しました。
UNICODEとの違いは、00があるかどうかという点ですが、
次のように考えてよいでしょうか。
その1:エディタは、連続的な00によって、UNICODEかどうかを区別する。
その2:ヌル文字を保存したら、00が変則的に存在することになり、
エディタがコード体系を理解できず、すべての文字を1つずつ表示する。
0184デフォルトの名無しさん
2009/04/04(土) 03:10:09typedefされたunsigned short型でサイズは16ビット
intel系CPUでの数値の表現方法はリトルエンディアンであるから
'a'、すなわちUnicodeでは0x0061という値をメモリに格納すると61 00となる
こんな当たり前のこと何一生懸命書いてるんだバーカ
という煽りが聞こえてきそうだ
ああ自己嫌悪・・・
0185デフォルトの名無しさん
2009/04/04(土) 03:22:06そんな単純なものじゃない。この理屈なら、ANSI (シフトJIS) の 2バイト文字が存在できないだろ。
0186169
2009/04/04(土) 03:31:03IsTextUnicodeとかいう関数があるぐらいですから、
UNICODEの判定は難しそうです。
とりあえず、a b c 問題の原因は、ヌル文字の保存が原因なようなので、
今後は、lstrlen(data)*sizeof(TCHAR)のようにしたいと思います。
それにしてもこのスレは良スレですね。
夜分遅く色々とありがとうございました。
0187デフォルトの名無しさん
2009/04/04(土) 07:14:33コンパイラがVC++なら
1.プロジェクトを作ってマルチバイト文字セットにする
2.fopen(hoge, "at")で開いて書き込む
で十分
Unicode?何それ、おいしいの?
0188デフォルトの名無しさん
2009/04/04(土) 10:53:15まだ理解してないね。
あんたがお礼を言うのは>>184のレスだ。
0189デフォルトの名無しさん
2009/04/04(土) 13:42:29印刷はできるようになりましたが、印刷プレビューがまだできません。
どうしたらよいでしょうか?
0190デフォルトの名無しさん
2009/04/04(土) 13:49:32似たようなことは既に言われている>>175
0191デフォルトの名無しさん
2009/04/04(土) 15:08:13unsigned short型とかいつの時代の話だよ
0192デフォルトの名無しさん
2009/04/04(土) 17:51:25どういうことでしょうか?
0193デフォルトの名無しさん
2009/04/04(土) 17:56:120194デフォルトの名無しさん
2009/04/04(土) 17:59:20できない
0195デフォルトの名無しさん
2009/04/04(土) 18:04:210196デフォルトの名無しさん
2009/04/04(土) 18:09:530197デフォルトの名無しさん
2009/04/04(土) 18:14:020198デフォルトの名無しさん
2009/04/04(土) 18:16:430199デフォルトの名無しさん
2009/04/04(土) 18:19:41〜Aか〜Wに渡すしかねーんじゃね?
0200デフォルトの名無しさん
2009/04/04(土) 18:23:400201デフォルトの名無しさん
2009/04/04(土) 18:24:18バーカ
0202デフォルトの名無しさん
2009/04/04(土) 18:33:45>WinGDI.h
>__gdi_entry WINGDIAPI BOOL WINAPI TextOutW( __in HDC hdc, __in int x, __in int y, __in_ecount(c) LPCWSTR lpString, __in int c);
>>198
UTF8を使うなら、UCS2に変換してTextOutWを使えばいいだけ。
バイト構造を変換するだけなんだから大した労力でもない。
0203デフォルトの名無しさん
2009/04/04(土) 18:34:21APIとして存在しなくても、gdi32.dllにそういう名称でエントリポイントが存在するのだから、
そうギスギスした返事を返さなくてもいいでしょ。
0204デフォルトの名無しさん
2009/04/04(土) 18:53:53エントリポイントという言葉の使い方が間違ってるよ
やっぱり馬鹿なんだね
0205デフォルトの名無しさん
2009/04/04(土) 19:08:47馬鹿はレスしないて下さい。迷惑です。
0206デフォルトの名無しさん
2009/04/04(土) 19:36:560207デフォルトの名無しさん
2009/04/04(土) 19:42:560208デフォルトの名無しさん
2009/04/04(土) 20:10:13Windows内部はUTF-16って誰か知ってんのか?
それ知ってるだけでやるべきことは導かれ、
Windowsにおける文字列操作の不毛な議論は要らんのだが。
0209デフォルトの名無しさん
2009/04/04(土) 20:17:470210デフォルトの名無しさん
2009/04/04(土) 20:30:30UTF-16っつか、正確にはUCS-2
0211デフォルトの名無しさん
2009/04/04(土) 20:30:560212デフォルトの名無しさん
2009/04/04(土) 20:37:460213デフォルトの名無しさん
2009/04/04(土) 20:43:15Windows XPなどの近年のOSの内部では、UTF-16符号化形式が使われている。UCS-2ともBMPの範囲で互換性がある。
Windowsのメモ帳で作成した「Unicodeテキスト」はBOMが付与されるようになっている。
正確にはUTF-16でいいようだ
0214デフォルトの名無しさん
2009/04/04(土) 20:43:38その他はマルチバイトじゃないの?
別途配布されてるMicrosoft Layer for Unicode という
ランタイムをインストールすると無理やり 〜W のunicode APIが使えるようになるとか
(試したことはないけど)
0215デフォルトの名無しさん
2009/04/04(土) 20:44:41Windows 2000のあたりからUTF-16対応と言われる気がする。
その辺りから本格的にサロゲートペアに対応するようになったのかなと思おう。
0216デフォルトの名無しさん
2009/04/04(土) 20:49:06NT系はNT4までがUCS-2で、2000以降では一部のAPIをUniscribeに転送して表面上はUTF-16
0217デフォルトの名無しさん
2009/04/04(土) 20:50:40TextOutWなんかはWindows 95から使える。
ほかにもIME関係が98/Meで正式対応とか。
http://msdn.microsoft.com/en-us/library/ms813063.aspx
まあ、MS-IMEもATOKも、95ではプライベートメッセージでUnicode使えるらしい。
0218デフォルトの名無しさん
2009/04/04(土) 20:53:240219デフォルトの名無しさん
2009/04/04(土) 20:53:48それこそ件のTextOutWとか、Win9xでも正常にUCS-2/UFT-16を扱えるAPIがいくつか存在する。
OS内のネイティブは9xがMBCS、NT系がUCS-2/UTF-16なんで、NT系でTextOutAとか使うと変換が入ることになるが
0220デフォルトの名無しさん
2009/04/04(土) 20:54:08リトルエンディアンの符号化スキームをUTF-16LEとして区別することもある。
MIMEなどの手段で符号化スキームにUTF-16BEやUTF-16LEを指定している場合には
BOMを付与することは許容されない(ZERO WIDTH NON-BREAKING SPACEとして扱う)。
Windows上の文書における「Unicodeテキスト」は特に明記のない場合、
リトルエンディアンのUTF-16符号化スキームのことを指す。
更に厳密にいえばUTF-16LEか
0221デフォルトの名無しさん
2009/04/04(土) 20:56:23だからファイルシステム関連は9xでもUnicodeだって
APIを経由するときに変換が入る
0222デフォルトの名無しさん
2009/04/04(土) 21:01:11スレ違い。ウザイし邪魔。
0223デフォルトの名無しさん
2009/04/04(土) 21:03:32Windows内部の文字コードは厳密にUTF-16。
0224デフォルトの名無しさん
2009/04/04(土) 21:06:45なんか頭悪そう
0225デフォルトの名無しさん
2009/04/04(土) 21:11:160226デフォルトの名無しさん
2009/04/04(土) 21:16:30''''''/ U .......::::::::;;;;;;;;;;;;;;;l、
/ ,__ 、___::::::::::;:::;;;;;;;;;;;;;;i
⊥ _ f ‐._´`i ̄ ̄ ̄ ::::::: r´ `i,;;;;;;,l
r´. l_,.,i t, "~’j :: ヽ, .l;;;;;;i やっべ・・・スイッチ押しても飛ばねぇ
'i、 |'~ノ ,ヾ-‐´ l ィ´, ノ;;;;l、
`-+イ、,・ .)、 U `;- ´ ;;;;;;;j
. `::ノ ,=--、ヽ /';、
`i 、==‐フ ,/ ヽ--―--、
`i、"´ ノ .ィ´ _.ィ´ ,,>ー-、_
0227デフォルトの名無しさん
2009/04/04(土) 21:21:55BOM付けていいの?
ビッグエンディアンなCPUだったらUTF-16BEに変換していいの?
0228デフォルトの名無しさん
2009/04/04(土) 21:36:46BOMは付けず、WCHARの配列を渡す。それでいいじゃないか。
0229デフォルトの名無しさん
2009/04/04(土) 21:37:350230デフォルトの名無しさん
2009/04/04(土) 21:43:300231デフォルトの名無しさん
2009/04/04(土) 22:44:390232デフォルトの名無しさん
2009/04/04(土) 23:32:43タスクマネージャでは20〜30%なんですが・・・
HQUERY query;
HCOUNTER counter;
PDH_FMT_COUNTERVALUE value;
::PdhOpenQuery(NULL,0,&query);
struct end{
HQUERY query;
~end(){
::PdhCloseQuery( query );
}
}e;
e.query = query;
::PdhAddCounter( query,TEXT("\\Process(現在のプログラム名から.exeを除いたもの")\\% Processor Time"),0,&counter );
::PdhCollectQueryData(query);
::Sleep(1000);
::PdhCollectQueryData(query);
::PdhGetFormattedCounterValue( counter,PDH_FMT_DOUBLE, NULL,&value );
return value.doubleValue;
0233デフォルトの名無しさん
2009/04/05(日) 01:50:110234デフォルトの名無しさん
2009/04/05(日) 03:04:120235デフォルトの名無しさん
2009/04/05(日) 09:41:25みせかけたいんですが何かいい関数ありますか?
例えばウィンドウ上をクリックされても反応せずそのまま一つ奥にあるソフト
にクリックがいくみたいな感じ
一つ後ろにあるソフトのハンドル調べて来たメッセージ送るしかない?
0236デフォルトの名無しさん
2009/04/05(日) 10:00:060237デフォルトの名無しさん
2009/04/05(日) 10:17:580238デフォルトの名無しさん
2009/04/05(日) 12:21:06知らないn・・・・
いや、どうすれば正しい値が取得できるのか教えてほしいんです。
0239デフォルトの名無しさん
2009/04/05(日) 12:41:22(vista sp1 + admin + uac無効)
0240デフォルトの名無しさん
2009/04/05(日) 14:05:05囲みとテキスト挿入ができるようになったじょ〜
印刷プレビュー難しすぎるよ、教えてくれよぉ〜
0241デフォルトの名無しさん
2009/04/05(日) 14:26:25プリンタのデバイスコンテキストから情報を集めて自力で作るかだな
0242デフォルトの名無しさん
2009/04/05(日) 14:29:44そいつは荒らしだからスルーしとけ
>>129>>189>>240
0243デフォルトの名無しさん
2009/04/05(日) 14:41:41デスクトップや他のソフトのウィンドウ上に線や四角形を描画したいのですが方法がわかりません
自分で作成したウィンドウであれば描画はできるようになりました
使用する関数などヒントを教えていただけませんか
0244デフォルトの名無しさん
2009/04/05(日) 14:44:270245デフォルトの名無しさん
2009/04/05(日) 14:55:07あら?今普通にコンソールでやったら、うまく行きました・・・。
もしかして、SetSystemTimeAdjustmentとかやってるとダメとかですか?
なんかこれやったら100になるんですが・・・
0246デフォルトの名無しさん
2009/04/05(日) 14:55:15今サービスと連携するアプリ作っていて
サービス内でファイルマッピング作成、それを用いてやり取りを当初考えていたんだが
System権限で実行される為か、連携アプリ側ではサービス側で作成したマップが開けない
連携に何か良い方法とかないかな?
0247デフォルトの名無しさん
2009/04/05(日) 15:04:090248デフォルトの名無しさん
2009/04/05(日) 15:10:500249デフォルトの名無しさん
2009/04/05(日) 15:21:450250デフォルトの名無しさん
2009/04/05(日) 15:50:210251デフォルトの名無しさん
2009/04/05(日) 15:52:52今回のとは違う話じゃ?
0252デフォルトの名無しさん
2009/04/05(日) 15:54:35でした
0253デフォルトの名無しさん
2009/04/05(日) 16:06:42サービス側できっちりアクセス権を指定しとけばOK。
0254246
2009/04/05(日) 16:23:28パイプはマッピングどうしてもうまく行かない時に試して見る
DDEは分からないから、最終手段にしてみる
>>253
サービス側って事はCreateServiceでサービスを登録する時に
サービスのアクセス権を指定するって事かな?
0255デフォルトの名無しさん
2009/04/05(日) 16:28:04セッションを跨いでいるからだめという原因なら、
マッピングオブジェクトの名前にGlobal\を前置するというのはやった?
0256デフォルトの名無しさん
2009/04/05(日) 18:15:42違う。CreateFileMapping でファイルマッピングオブジェクトを作るときに、
SECURITY_ATTRIBUTES を指定する。
0257デフォルトの名無しさん
2009/04/05(日) 18:18:171ミリ秒で時間を使いたいからSetSystemTimeAdjustmentで10000nsecに設定してるんですけど、
これとCPU使用率の計測をうまく両立させることってできないんですかね?
0258デフォルトの名無しさん
2009/04/05(日) 19:09:08独り言は日記帳へどうぞ
0259デフォルトの名無しさん
2009/04/05(日) 21:01:410260246
2009/04/05(日) 21:06:44試してみた
でも、やっぱりERROR_ACCESS_DENIEDが発生する
>>256
単純にSECURITY_ATTRIBUTESのアドレスを渡すだけではないよね?
CreateFileMappingに渡す時のSECURITY_ATTRIBUTESがどのような状態にすればいいのか分からない
無知で申し訳ない
0261デフォルトの名無しさん
2009/04/05(日) 21:30:40だったら特に障害なく動作するけどさすがにこのレベルで作り直すのはめんどくさいよな、たぶん
0262デフォルトの名無しさん
2009/04/05(日) 21:46:12回答でてる気もするが・・・
やり方忘れたけど、サービス系の場合次のような処理が必要だった希ガス。間違いだったらスマソ
1. 対話を有効
2. 特定ユーザーのデスクトップ領域取得
3. 実行
0263デフォルトの名無しさん
2009/04/05(日) 21:48:530264デフォルトの名無しさん
2009/04/05(日) 22:01:420265246
2009/04/05(日) 22:24:21>>261
サービスは常に起動状態で、後は連携アプリでいつでも操作っていうのを想定してたから
かなり作り直すことになるかも・・・
System権限でDLLを開かれると、そのDLLがロックされって事は無いと思うんで
サービスと連携の間にDLLを置いて対応出来ないかをちょっと試して見ます
0266デフォルトの名無しさん
2009/04/05(日) 22:24:37VisualStudio 2008 Express Edition で、
自分のウィンドウに「AtlAxWin」の様なIEコンポーネントを張りつけたソフトを作りたいのですが、
ATLを使わずにこれを実現するにはどうしたらよろしいでしょうか?
宜しくお願いします。
0267デフォルトの名無しさん
2009/04/05(日) 22:31:34自分も、前にそれをやろうとしたことがあって、これを参考にした。
http://www.adp-gmbh.ch/win/misc/mshtml/HTMLWindow.html
けど、これもかなり無茶苦茶なコード、QueryInterfaceの関係が酷すぎるのを覚悟して。
0268デフォルトの名無しさん
2009/04/05(日) 22:39:330269デフォルトの名無しさん
2009/04/05(日) 22:42:190270266
2009/04/05(日) 22:49:36即レス感謝します
そのサイトは大変参考になりそうですね
DDKはまだ、自分には未開の地ですが、少し勉強してみたい思います
ありがとうございました
0271デフォルトの名無しさん
2009/04/05(日) 22:50:480272デフォルトの名無しさん
2009/04/05(日) 23:03:28ありがとうございます。
自分が勉強不足なのですが、マウスでメニューを選択した時に出るメッセージを
コード上で発生できないか調べていました。
0273デフォルトの名無しさん
2009/04/05(日) 23:06:49もし、選択というのがクリックのことであれば、
単にSendMessageでWM_COMMANDを送りつけるだけで十分ということにならないかな?
0274デフォルトの名無しさん
2009/04/05(日) 23:08:360275デフォルトの名無しさん
2009/04/05(日) 23:13:19Spy++使ってるか?
0276デフォルトの名無しさん
2009/04/05(日) 23:20:36それでできました!ありがとうございます。
>>275
Spy++ですか?VC++9 Expressには入っていないみたいです。
0277デフォルトの名無しさん
2009/04/05(日) 23:57:46>VC++9 Expressには入っていないみたいです。
なら、↓のソフトを持っておけ。いつか役に立つ。
http://www.windows-spy.com/
0278デフォルトの名無しさん
2009/04/06(月) 00:04:230279デフォルトの名無しさん
2009/04/06(月) 01:50:16昔の話だっけ
0280デフォルトの名無しさん
2009/04/06(月) 02:22:33……Spyってどんなツールだったっけ?
0281デフォルトの名無しさん
2009/04/06(月) 02:30:07これの事かな〜
0282デフォルトの名無しさん
2009/04/06(月) 03:54:510283デフォルトの名無しさん
2009/04/06(月) 06:46:43InitializeSecurityDescriptor() しただけの空の SECURITY_DESCRIPTOR を指定して、
SECURITY_ATTRIBUTES のサイズ指定も忘れずに。
これだと、何でも OK の指定だから、その辺は気をつけてね。
0284デフォルトの名無しさん
2009/04/06(月) 07:10:04ありがとうございます。使ってみます。
0285デフォルトの名無しさん
2009/04/06(月) 08:37:17ありがとうございます。使ってみます。
0286デフォルトの名無しさん
2009/04/06(月) 10:18:21HWND hWnd = GetDesktopWindow();
HDC hdc = GetWindowDC(hWnd);
...
ReleaseDC(hWnd, hdc);
0288デフォルトの名無しさん
2009/04/06(月) 12:15:45難解な言い回しでなかなか理解できません。
Win32APIでソフト作りたいんですけど、
何から手を付けたら良いでしょうか。
0289デフォルトの名無しさん
2009/04/06(月) 12:18:160290デフォルトの名無しさん
2009/04/06(月) 12:20:18Advanced Windwsは入門者向けじゃないぞ
>>6の入門サイトをテキトーに回るか
書籍なら、プログラミングWindowsで良いんじゃない?
0291デフォルトの名無しさん
2009/04/06(月) 12:50:59http://wisdom.sakura.ne.jp/system/winapi/
内容も濃く、良サイトみたいですが、2000年で更新止まってないですか?
0292デフォルトの名無しさん
2009/04/06(月) 12:57:292000年から今までの間にWin32APIの仕様は変わってるんだから使い物になるわけねーだろ
と言いたいってことでおk?
0293デフォルトの名無しさん
2009/04/06(月) 13:19:21違います。Windowsの根本は何も変わってません。
10年経った今も十分通用する基本的解説だと思ってます。
0294デフォルトの名無しさん
2009/04/06(月) 13:26:340295デフォルトの名無しさん
2009/04/06(月) 14:17:29そういうことです。
0296デフォルトの名無しさん
2009/04/06(月) 16:33:54冗談のつもりなのか?
0297デフォルトの名無しさん
2009/04/06(月) 16:46:150298デフォルトの名無しさん
2009/04/06(月) 16:50:192000年から今までの間にWin32APIの仕様は変わってるんだから使い物になるわけねーだろ
と言いたいってことでおk?
0299デフォルトの名無しさん
2009/04/06(月) 17:21:05使用できるAPIはほとんど残ってる
が正解
実際XP対応ソフトなら98以降が動作環境対象だ
0300デフォルトの名無しさん
2009/04/06(月) 17:26:35いやいやいや、
言っていることは100%同意するが、現実は要2000以降のアプリが多いぞ。
結構みんなW版使っているんじゃないかな?
0301デフォルトの名無しさん
2009/04/06(月) 17:37:23GetForcusやフォアグランドウィンドウで分かるんですかね?
うまくいかなくて、つかってるAPIが間違ってるかどうか教えてください。
0302デフォルトの名無しさん
2009/04/06(月) 17:41:52キーボードからの入力を受け取るのは基本的に1つだからね。
で、GetFocusでいけるとおもうけど、どううまくいかないの?
0303デフォルトの名無しさん
2009/04/06(月) 17:43:360304デフォルトの名無しさん
2009/04/06(月) 17:44:44本家がサポートを打ち切ったOSまでサポートしたくないだろ
0305デフォルトの名無しさん
2009/04/06(月) 17:53:03レス、ありがとうございます。
GetForcusでハンドルは取れるんですが、
ハンドルをSpyのものと見比べると、どうもただ単にウィンドウが
取得されているみたいです。
AttatchThreadInputは知らないんで調べてみます。
0306デフォルトの名無しさん
2009/04/06(月) 18:10:220307デフォルトの名無しさん
2009/04/06(月) 18:46:19XP以降だと一部のコントロール(Editなど)がUnicode版しか対応していない
要するにXP以降にまともに対応するならUnicodeアプリにするしか無いってこと
もちろん9x/NT系を判別して内部でA/W切り替えれば両対応できるがそんなソフトは殆ど無い
0308デフォルトの名無しさん
2009/04/06(月) 18:58:58>単にウィンドウが取得されているみたいです。
それが GetFocus の仕様なんだけど?
0309デフォルトの名無しさん
2009/04/06(月) 19:25:580310デフォルトの名無しさん
2009/04/06(月) 20:28:080311デフォルトの名無しさん
2009/04/06(月) 20:43:37さすがブビ厨は馬鹿ばっか
0312デフォルトの名無しさん
2009/04/06(月) 21:15:08ただNT系ならかなり以前のソフトでもXPで動くのは確か。
鬼畜王などなど
0313デフォルトの名無しさん
2009/04/06(月) 21:26:420314デフォルトの名無しさん
2009/04/06(月) 21:28:03てか、ほとんどがそれ。
2000を使ってると2000とXPの壁をよく感じるよ。
0315デフォルトの名無しさん
2009/04/06(月) 21:39:01486SX 33MHzで動かなかった思い出がw
0316デフォルトの名無しさん
2009/04/06(月) 21:44:08だめもとで、unicows.libリンクしておけばいいのに、と思う。
0317デフォルトの名無しさん
2009/04/06(月) 22:41:020318デフォルトの名無しさん
2009/04/06(月) 22:52:440319デフォルトの名無しさん
2009/04/06(月) 22:56:230320デフォルトの名無しさん
2009/04/06(月) 22:57:530321デフォルトの名無しさん
2009/04/06(月) 23:00:360322デフォルトの名無しさん
2009/04/06(月) 23:02:400323デフォルトの名無しさん
2009/04/06(月) 23:04:10都合が悪くなるとスレ違いと言って逃げる人ですね、わかります
0324デフォルトの名無しさん
2009/04/06(月) 23:06:390325デフォルトの名無しさん
2009/04/06(月) 23:12:050326321
2009/04/06(月) 23:17:330327デフォルトの名無しさん
2009/04/06(月) 23:17:39CreateToolhelp32Snapshot()などとTerminateProcess()を組み合わせれば
いけるのは分かるのですが、その方法では終了させている間に対象の
プロセスが停止して新しいプロセスが同じIDで起動して停止させてしまう
可能性はないのでしょうか?
0328デフォルトの名無しさん
2009/04/06(月) 23:20:390329デフォルトの名無しさん
2009/04/06(月) 23:22:40すいません、詳しく教えてください。
0330デフォルトの名無しさん
2009/04/06(月) 23:24:520331デフォルトの名無しさん
2009/04/06(月) 23:30:24そんなに心配ならプロセスハンドルを保持し続けていれば?
ハンドルを持っている、つまりカーネル内部にプロセスのオブジェクトが残っている限り、
そのIDは使い回されないはずだから。
0332デフォルトの名無しさん
2009/04/06(月) 23:32:48ジョブオブジェクトを使ったらいいんじゃない?
0333デフォルトの名無しさん
2009/04/06(月) 23:35:16ありがとうございます。
ただ、CreateToolhelp32Snapshot()がスナップショットなので、そこから目的の
プロセスのハンドルを探している間に(ハンドルをつかむ前に)PIDが使いまわされないかを
心配しています。
さすがにそんな短時間ではあり得ないのでしょうか?
0334デフォルトの名無しさん
2009/04/06(月) 23:48:49ジョブオブジェクトは知らなかったので調べてみました。
TerminateJobObject()を使って全てのジョブオブジェクトを終了させることが
出来そうですね。
ただ、ジョブオブジェクトを作る際にプロセスのハンドルを指定しなければならず、
PIDからハンドルを取得するまでの間にPIDが使いまわされる可能性は無いのでしょうか?
最初から自分でプロセスを作成してプロセスのハンドルを保持していれば問題
なさそうですが、そうでなければPIDがかぶる可能性が完全に無いということは
ありえないのでしょうか?
0335デフォルトの名無しさん
2009/04/06(月) 23:56:14大いにある
そもそも自分以外のプロセスをTerminateするなんて行儀が悪いんだよ
WM_CLOSE等の適当なメッセージを投げて終了してもらうように作っとけ
0336デフォルトの名無しさん
2009/04/06(月) 23:57:44プロセスの起動と終了を繰り返して、何回目で重複するか試してみればいいじゃん。
0337デフォルトの名無しさん
2009/04/07(火) 00:05:15GetWindowThreadProcessId( hwnd, &pid );
HANDLE handle = OpenProcess( pid, ... );
こういうソースが期待通りに動作する保証なんてどこにも無いってこと。
GetWindowThreadProcessIdからOpenProcessの間に、対象プロセスが終了して、違うプロセスが起動して同じPIDが使われる可能性があるからな。
0338デフォルトの名無しさん
2009/04/07(火) 00:15:46CreateProcess()で作成したところからハンドルを保持して管理するとか、メッセージ
投げて終了させるのが正しいのは分かるのですが、今回はそういうことが出来ない
事情があるのです。
>>337
正しく動作する保証が無いことは分かりましたが、タスクマネージャにある
「プロセスツリーの終了」はどうやって実現しているのでしょうか?
0339デフォルトの名無しさん
2009/04/07(火) 00:22:03マルウェアでも作ってるのか?
0340デフォルトの名無しさん
2009/04/07(火) 00:29:030341デフォルトの名無しさん
2009/04/07(火) 00:29:25子プロセスの作成のソースは別のところが管理していて手が出せず、子プロセスの
終了部分だけを実装する必要があるのです。
0342デフォルトの名無しさん
2009/04/07(火) 00:32:16そもそもTerminateProcessは暴走したプロセスを止めるような目的で使う物だろが
0343デフォルトの名無しさん
2009/04/07(火) 00:34:070344デフォルトの名無しさん
2009/04/07(火) 00:37:41そのソフトは試用中には定期的に別プロセスが起動して広告メッセージを出す。
広告メッセージが出る以外は製品版と何ら違いは無い。
つまりこれを自動的に潰すプログラムを作れば製品版を購入する必要は無くなる。
こういう事じゃねーの?
0345デフォルトの名無しさん
2009/04/07(火) 00:38:05もちろん分かっていますが、プロセスが残って入れば強制終了させる必要があるのです。
>>343
違います。
もしそうであれば、ほぼ起きなさそうな確率の問題なんて心配しません。
0346デフォルトの名無しさん
2009/04/07(火) 00:39:500347デフォルトの名無しさん
2009/04/07(火) 00:42:45TerminateProcessが必然として話を進めてる時点でおかしいんだよ
0348デフォルトの名無しさん
2009/04/07(火) 00:45:240349デフォルトの名無しさん
2009/04/07(火) 00:50:080350デフォルトの名無しさん
2009/04/07(火) 00:53:56付けなくていい
はい次の方、どうぞー
0351デフォルトの名無しさん
2009/04/07(火) 01:01:48あのう、、一昨日くらいからなんですけどー・・・・
同じ関数を2回続けて呼ぶ糞を発見しました。
1回目はサイズ取得で2回目に所望の結果取得みたいなんですがー。
糞仕様だからですか?
0352デフォルトの名無しさん
2009/04/07(火) 01:03:39サイズ取得用に別関数を用意するのが面倒だったんだろ。
0353デフォルトの名無しさん
2009/04/07(火) 01:06:260354デフォルトの名無しさん
2009/04/07(火) 01:07:31そうです
そしてあなたの日本語も糞です
0355デフォルトの名無しさん
2009/04/07(火) 01:09:38いえいえあなたには及びません
0356デフォルトの名無しさん
2009/04/07(火) 03:18:05なぜ? シンボル数が減らせるからか?
0357デフォルトの名無しさん
2009/04/07(火) 06:15:02UINT GetHogeText( HANDLE hObj, LPTSTR buffer, UINT length )
{
UINT sufficient_length = lstrlen( OBJ_TO_PTR(hObj)->Text ) + 1;
if( buffer && length >= sufficient_length )
{
memcpy( buffer, OBJ_TO_PTR(hObj)->Text, sufficient_length );
}
return sufficient_length;
}
0358デフォルトの名無しさん
2009/04/07(火) 08:42:37いいんでしょうか?
例えばUSBカメラからの信号を受けるとか、何か接続されてる機器に信号を送るとか
0359デフォルトの名無しさん
2009/04/07(火) 08:47:300360301
2009/04/07(火) 08:59:33ありがとうございました。
新たに教えてほしいんですが、一応と書いたのは一旦他のプログラムに
フォーカスが移って目的の外部プログラムにフォーカスが戻ってきたときに
Editではなく親ウィンドウのハンドルが返ってくるときがあって、Editに
テキストを送れない時があります。
親ウィンドウかどうかは判別できるので親ウィンドウならEditのハンドルを
取得すればいいだけなんですが、なんかスマートな方法ってないですかね?
長文になってしまいましたが、よろしくお願いします。
0361デフォルトの名無しさん
2009/04/07(火) 09:50:16普通はドライバ経由で、その接続してる機器ごとの処理となる
USB-シリアルポートなら、普通のシリアルポートと同じ処理、
スキャナ等なら、ドライバ提供のものかtwainを使う
0362デフォルトの名無しさん
2009/04/07(火) 10:00:42ということはその機器のドライバが提供してるAPIがわからない場合はデバイスドライバの
勉強からするべきなんしょうか
今度デバイスドライバ開発の本買ってみることにします。ありがとう
0363デフォルトの名無しさん
2009/04/07(火) 12:26:57同じAPIを2度続けてコールする話でしょ?
そのコードは的を射てない気がする。
0364デフォルトの名無しさん
2009/04/07(火) 12:33:11>>357は>>356の回答
0365デフォルトの名無しさん
2009/04/07(火) 12:38:18>>353
>>356
>>357
って流れじゃないの?
0366デフォルトの名無しさん
2009/04/07(火) 12:40:17呼ばれる側のコード量のことは考えてないだけだろう。
0367デフォルトの名無しさん
2009/04/07(火) 14:45:49なるほど・・・。
しかし、呼ばれる側が怠慢したいだけに思う。
基本は呼ぶ方のこと考えて設計するでしょう。
0368デフォルトの名無しさん
2009/04/07(火) 14:50:030369デフォルトの名無しさん
2009/04/07(火) 17:27:470370デフォルトの名無しさん
2009/04/07(火) 17:34:41わざわざ別のAPIにすれば下手すりゃ呼ばれる側のコード量が2倍近くになる
CPUの命令キャッシュにも載りにくくなるし、そんな理由でシステムファイルが肥大化して
OSのインストールディスクがDVD2枚組とかなったら迷惑
0371デフォルトの名無しさん
2009/04/07(火) 17:41:04別関数になってると「えーと、必要なサイズを取得するAPIは・・・」とMSDN引く手間が増える
そして「〜というAPIの必要サイズを取得するAPIを教えてください」「ググレカス」というレスで埋まる事になる
0372デフォルトの名無しさん
2009/04/07(火) 17:45:40昔(1.0〜2.0の時代)はひとつのAPIを一度呼ぶだけのために”Public Declare Function うんたらかんたら"しなきゃならんかったので、
それがイヤになってVB→C→C++に乗り換えていったんだが。
(なもんで、俺のVBの時計は2.0で止まっている。)
0373デフォルトの名無しさん
2009/04/07(火) 17:50:53#include <windows.h>
みたいなのはVB/C#には無いでしょ
0374デフォルトの名無しさん
2009/04/07(火) 17:58:24GetWindowText/GetWindowTextLengthとか分かれているのもあるから統一感がないんだよな。
0375デフォルトの名無しさん
2009/04/07(火) 17:59:25今も同じ。
変わったことがあるとすれば、そういうのをまとめているウェブサイトができて
ググってコピペできるようになったことくらい。
0376デフォルトの名無しさん
2009/04/07(火) 18:00:250377デフォルトの名無しさん
2009/04/07(火) 18:01:32サイズ取得以降、バッファを確保して実データを取得するまでの間にサイズが変動する可能性がある現在
2回呼び出しを要求するAPI仕様は阿呆としかいいようがない
0379デフォルトの名無しさん
2009/04/07(火) 18:10:57要するにAPI側でバッファ確保して返せってことか
アホはお前だよ
0380デフォルトの名無しさん
2009/04/07(火) 18:11:38ってやってる間にデータ長が変わるって可能性も無いわけじゃないんだよなぁ
0381デフォルトの名無しさん
2009/04/07(火) 18:13:21GetWindowsDirectoryとか、1回目と2回目の呼出の間にWindowsディレクトリが移動していたら驚愕
0382デフォルトの名無しさん
2009/04/07(火) 18:30:38レジストリを逐次読んでいったら途中で書き換えられた。
環境変数からパスを取得していたら変更された。
>>377は阿呆としか言いようがない。
0383デフォルトの名無しさん
2009/04/07(火) 19:47:04ファイルは必要ならロックしろ
レジストリや環境変数は変更された場合問題があるなら使うな
当然だろ
0384デフォルトの名無しさん
2009/04/07(火) 20:33:40レジストリの読み書きは一度で行え
環境変数は変更されたらWM_SETTINGCHANGEが来るから適切に処理しろ
当然だろ
0385デフォルトの名無しさん
2009/04/07(火) 21:17:310386デフォルトの名無しさん
2009/04/07(火) 21:29:39馬鹿?
0387デフォルトの名無しさん
2009/04/07(火) 21:46:44>レジストリの読み書きは一度で行え
馬鹿はこういう無理を平気で言う
0388デフォルトの名無しさん
2009/04/07(火) 21:51:37正常にとれるまでサイズの取得、メモリの確保、データの取得を繰り返せばいいだけ。
他は対策云々を出すのに、この件に関しては出さないって、どれだけ頭が悪いんだろう?
0389デフォルトの名無しさん
2009/04/07(火) 22:05:44RegCreateKeyEx
で開いたら一度になる、ってことじゃないのか?
0390デフォルトの名無しさん
2009/04/07(火) 22:08:52RegQueryMultipleValues
つーかレジストリが途中で書き換えられて困る状況なんて無いに等しいだろ
少なくとも HKCU\software\(会社名)\(ソフト名) が途中で書き換えられる事は無い
∵自分以外のソフトがここにデータを書く事は無い
関連付けのような、他のソフトが弄れるレジストリでも然るべき手順で読み書きすれば問題無い
0391デフォルトの名無しさん
2009/04/07(火) 22:17:410392デフォルトの名無しさん
2009/04/07(火) 22:26:36お前ら普段そんな気使ってるの?
0393デフォルトの名無しさん
2009/04/07(火) 22:29:20>ldwTotsize
>lpValueBuf パラメータが指すバッファのサイズを、
>バイト単位で示す値へのポインタを指定します。関数が成功すると、
>バッファにコピーされたバイト数が ldwTotsize パラメータに入ります。
>バッファが小さすぎたために関数が失敗した場合は、必要なサイズ(バイト数)が入ります。
0394デフォルトの名無しさん
2009/04/07(火) 22:30:33複数起動を許すAPを作った場合は考える必要がありそうな気もする。
0395デフォルトの名無しさん
2009/04/07(火) 22:33:55レジストリからパス情報なりを取得した後に、
データを読み書きしようとしたら、
その間にパスを変更されるだろという話だ。
結局そんなことを言っていたら切りがない。
それが>>377に対する結論。
0396デフォルトの名無しさん
2009/04/07(火) 22:36:22二重起動は無視?
0397デフォルトの名無しさん
2009/04/07(火) 22:36:31・カラーのビットマップの作成
・2階調のビットマップの作成
Win32APIを使ってジグソーパズルを作っています。
1枚の元絵を読み込んで、そこからピース(台形)ごとにビットマップと
マスク(2階調)を作成して、PlgBlt関数で描画をさせようと考えました。
・CreateBitmap
・CreateDIBitmap
・CreateDIBSection
ビットマップの作成については上に書いた3つの関数を見つけたのです
が、主に引数の値をどうすればいいのかが、いまいち分かりません。
LoadImage等で読み込んだ元絵は、GetObject等でピクセルデータの取得
をすることはできましたので、カラー用のビットマップと、2階調のマスク
が作れれば解決すると思うのですが、どういった風に記述すれば作成できま
すでしょうか?
ちょっと説明が分かりづらくて申し訳ないのですが、教えて頂けますと嬉
しいです。
0398デフォルトの名無しさん
2009/04/07(火) 22:52:30自分のアプリなら読み書きする時にMutexでロックするぐらいの対策はしておくべきだろ
>>395
マイドキュメントが変更されると困るとかそういう話か?
パスが変更されて困るならApplicationDataに置いとけばいいだろ
要するにアプリ側で対策すれば済むレベルなんだよ
0399デフォルトの名無しさん
2009/04/07(火) 22:54:550400デフォルトの名無しさん
2009/04/07(火) 23:01:28>自分のアプリ
勝手な前提で話を進めるなよ。
そんなことを言ったらサイズが変更される可能性のあるAPIだって、
自アプリ外で変更される可能性のないものを前提にすればいいだけになるだろ。
自分の主張を押し通すだけのために、都合のいいように条件を決めるって、
どれだけ自分勝手なんだよ?
0401デフォルトの名無しさん
2009/04/07(火) 23:14:180402デフォルトの名無しさん
2009/04/07(火) 23:15:02Win32APIの常識は常識って発想。まじウケるんだけど。
0403デフォルトの名無しさん
2009/04/07(火) 23:18:42小学生は黙っててね。
0404デフォルトの名無しさん
2009/04/07(火) 23:24:460405397
2009/04/07(火) 23:28:53言葉足らずで申し訳ないです。
各関数を使ったビットマップの作り方です。
まず、以下のプログラムで2階調のデータはできていますでしょうか?
lpBitmap = (LPBYTE)HeapAlloc( GetProsessHeap( ) , HEAP_ZERO_MEMORY , xsize * ysize ) ;
(次に、lpBitmapの中をどういう扱えば、任意のピクセルの色を黒から白に変えられますでしょうか?)
hBitmap = CreateBitmap( xsize , ysize , 1 , 1 , lpBitmap ) ;
0406デフォルトの名無しさん
2009/04/07(火) 23:38:450407397
2009/04/07(火) 23:43:59ビットでしたか、すみません、すっかり頭から抜けていました。
通りでオーバーフローしていたのですね。
やってみます、ありがとうございました。
0408デフォルトの名無しさん
2009/04/07(火) 23:50:34特にこだわりがないならCreateDIBSectionでやってしまうというのもいいとおもうよ。
ピクセルを操作する事を望んでるみたいだからそのようにしてみてはいかがかな?
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win121.html
0409397
2009/04/08(水) 00:09:41CreateDIBSectionでカラービットマップ、CreateBitmapでマスクを作って、試してみようと思います。
また分からないことができてしまった際には、教えてくれると嬉しいです。
助かりました、ありがとうございました。
0410デフォルトの名無しさん
2009/04/08(水) 03:09:57は?何言ってんの?
このスレじゃ一番有識者だけど?断言してもいいぜ?勝負するか?
0411デフォルトの名無しさん
2009/04/08(水) 03:20:150412デフォルトの名無しさん
2009/04/08(水) 06:13:040413デフォルトの名無しさん
2009/04/08(水) 08:58:20話すようなスレじゃないだろ。
どんなクソな設計だろうと、一貫性があろうとなかろうと、最終的には
それを使わなきゃならないんだから、黙って実装に従って使えってこった。
0414デフォルトの名無しさん
2009/04/08(水) 09:25:18ごめん中学生だったか、黙っててね。
0415デフォルトの名無しさん
2009/04/08(水) 10:55:01付箋アプリのようにデスクトップにウィンドウを貼り付けるにはどうしたらいいでしょうか?
MSDNにはWPFのサンプルはあったのですが、Win32でやるにはどうしたらいいでしょうか。
0416デフォルトの名無しさん
2009/04/08(水) 10:56:530417デフォルトの名無しさん
2009/04/08(水) 12:49:10黙って従ってたらWin32API並の糞インタフェースを公開する
馬鹿開発者が増えるんだぞ。
0418デフォルトの名無しさん
2009/04/08(水) 13:00:53空が落ちてくる心配みたいなものだろ
0419デフォルトの名無しさん
2009/04/08(水) 13:23:110420デフォルトの名無しさん
2009/04/08(水) 13:25:420421デフォルトの名無しさん
2009/04/08(水) 13:26:110422デフォルトの名無しさん
2009/04/08(水) 13:32:370423デフォルトの名無しさん
2009/04/08(水) 13:34:37この辺にしておかないか?いやホントに。
0424デフォルトの名無しさん
2009/04/08(水) 13:58:20訳:Win32APIは難しくてボクには理解できません><
0425デフォルトの名無しさん
2009/04/08(水) 14:05:17「Win32APIは設計がクソだ」
0426デフォルトの名無しさん
2009/04/08(水) 15:28:15そういった用途で使えるWin32APIってどれでしょうか?OSはWindows XPです。
たとえばMBRとかFATとかパーテーションテーブルとかゴミ箱から削除したファイルの残骸などです。
0427デフォルトの名無しさん
2009/04/08(水) 15:37:380428デフォルトの名無しさん
2009/04/08(水) 15:41:170429デフォルトの名無しさん
2009/04/08(水) 16:03:07大丈夫でしたorz
ですよね。すみません助かりました。難しく考えすぎてたorz
ありがとうございます!!
0430デフォルトの名無しさん
2009/04/08(水) 16:38:25あんた仕事したことある?coderレベルの仕事しかしてないんじゃない?
たまに、いかにもWin32APIって仕様のインタフェース見かけるよ。
理に適ってれば許すが、あらゆる観点でWin32API厨的な作り。
無駄に引数13個とかな。
0431デフォルトの名無しさん
2009/04/08(水) 16:39:440432デフォルトの名無しさん
2009/04/08(水) 16:40:51仕事したくないから2chやってる身にもなれ
0433デフォルトの名無しさん
2009/04/08(水) 16:42:24単に設計がバカなだけだと思うけど。
0434デフォルトの名無しさん
2009/04/08(水) 16:44:30>たまに、いかにもWin32APIって仕様のインタフェース見かけるよ。
作った奴に言ってろ。
「言ったよ」ってレスはいらねえぞ。
解決したならそれで良いじゃん。現時点で何か問題なの?って話。
0435デフォルトの名無しさん
2009/04/08(水) 16:45:080436デフォルトの名無しさん
2009/04/08(水) 16:47:41インターフェースを統一した Win32APIラッパ- をわざわざ用意しなおすの? って話に・・・
0437デフォルトの名無しさん
2009/04/08(水) 16:48:37431 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/08(水) 16:39:44
432 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/08(水) 16:40:51
433 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/08(水) 16:42:24
434 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/08(水) 16:44:30
435 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/08(水) 16:45:08
ワロタ
0438デフォルトの名無しさん
2009/04/08(水) 16:52:30それができないなら実現不可能だから黙ってて
0439デフォルトの名無しさん
2009/04/08(水) 16:53:540440デフォルトの名無しさん
2009/04/08(水) 16:56:170441デフォルトの名無しさん
2009/04/08(水) 16:56:54今となっては別の感慨を抱いている。
1) あれの代わりを俺が設計できるか? できないだろう。
2) APIを定めたマイクロソフトの開発チームは俺より優秀か? はるかに優秀だろう。
3) ホントは慣れてきただろ? そうそう、もう慣れてきた。苦痛も無い。
0442デフォルトの名無しさん
2009/04/08(水) 16:58:170443デフォルトの名無しさん
2009/04/08(水) 16:58:290444デフォルトの名無しさん
2009/04/08(水) 16:59:440445デフォルトの名無しさん
2009/04/08(水) 17:13:29でもそれが存在していて、美しく一貫性があって、しかもきわめて
薄いラッパーで性能低下がほぼ0だったら、俺は使う。
0446デフォルトの名無しさん
2009/04/08(水) 17:15:170447デフォルトの名無しさん
2009/04/08(水) 18:13:07学校始まって憂鬱なんだろうけどこんなスレで憂さ晴らしするなよ
0448デフォルトの名無しさん
2009/04/08(水) 18:15:470449デフォルトの名無しさん
2009/04/08(水) 18:26:26> 無駄に引数13個とか
Win32APIのインタフェースとどう関係あるんだ
まさかAPIの中に引数が多い関数があるからとか言う理由じゃないよな
0450デフォルトの名無しさん
2009/04/08(水) 18:51:59VB厨がAPI呼出の煩雑さに発狂してるだけでしょうな
0451デフォルトの名無しさん
2009/04/08(水) 19:04:36良く引数で迷う。
0452デフォルトの名無しさん
2009/04/08(水) 19:05:380453デフォルトの名無しさん
2009/04/08(水) 19:10:02念のため用意されてるような引数が多すぎる。
0454デフォルトの名無しさん
2009/04/08(水) 19:13:13開発環境の力借りて言語的に補助するのならワカランではないけど
同じ機能のAPIで省略可能な組み合わせ分をシンボル変えて列挙用意するのは微妙だな。
0455デフォルトの名無しさん
2009/04/08(水) 19:14:41例えば滅多に NULL 以外を指定しない引数あるいはメンバなどが多すぎる
0456デフォルトの名無しさん
2009/04/08(水) 19:16:060458デフォルトの名無しさん
2009/04/08(水) 19:21:35内部で使うんだったら、一般公開用のAPIとは別にすればいいし、
将来使うつもりなら、そのときにExでも付けて新APIを増やせばいいのにと思う。
0459デフォルトの名無しさん
2009/04/08(水) 19:31:33他だと引数ごとに関数が用意されているのか?
そんな訳はないよな、それこそ馬鹿げている
書く必要がないだけで大元は引数が用意されているんじゃないのか
0460デフォルトの名無しさん
2009/04/08(水) 19:31:390461デフォルトの名無しさん
2009/04/08(水) 19:36:41その論で CreateFont を場合分けして作ったいったら爆発しそうだw
CreateFont_Name (名前だけで) とか CreateFont_Height (高さだけで) .... 気が狂いそう
0462デフォルトの名無しさん
2009/04/08(水) 19:43:13逆か。そういえばCallNext(ryとかCreateWindowのやつがそうだね。
0463デフォルトの名無しさん
2009/04/08(水) 19:43:43CreateFontをよく分かってない馬鹿発言だな
0464461
2009/04/08(水) 19:49:28どういうこと?
NULLや0を省略的意味で引数に渡せる関数で
NULLや0を記述する必要の無い API が欲しい って言ってるのが元なんだけど・・・
0465デフォルトの名無しさん
2009/04/08(水) 19:50:09IMAGEINFOのUnusedは当初はhbmImageのプレーンとビット数だった
探せば幾らでもあるだろ
0466デフォルトの名無しさん
2009/04/08(水) 19:50:21> 引数ごとに関数
SetHoge(handle, hage); とかそうだろ
大元ってのがよくわからんが
GetObject と CreateHogeIndirect みたいなパターンで
「普通の設定」をパスできるならそうしたいだろ
誰か言ってたけど C++ が欲しくなる
0467デフォルトの名無しさん
2009/04/08(水) 19:52:490468デフォルトの名無しさん
2009/04/08(水) 19:55:43CreateHogeIndirect ⇔ CreateHoge と SetHoge_Indirectの中の1つ
こういうことか
Create 直後から Set 呼び出し完結するまでのスキマの扱いがやらしいね
0469デフォルトの名無しさん
2009/04/08(水) 20:13:34勘違いか?
引数の数ごとに関数が在るのかどうかだぞ
そうじゃないなら、速度を重視した場合余計な処理が増える事になる
デフォルトをパスしたくても最終的にはデフォルトであるということを伝えなければならない
0470デフォルトの名無しさん
2009/04/08(水) 20:14:080471デフォルトの名無しさん
2009/04/08(水) 20:17:31言ったよ
0472デフォルトの名無しさん
2009/04/08(水) 20:20:090473デフォルトの名無しさん
2009/04/08(水) 20:29:230474デフォルトの名無しさん
2009/04/08(水) 20:29:31言ったよ
0475デフォルトの名無しさん
2009/04/08(水) 20:37:20引数の数と関数の数の一致にこだわる理由がよくわからない
誰もそうは言っていないと思うぞ
渡すべき情報が多いときは構造体にまとめるなり
デフォルト値を用意するなりは、変わったことではない
誰か言っていたが歴史的事情で残った醜悪さだと俺も思うが
その醜悪さを残すまいとする工夫に欠けるところが皆無だと思うか?
> デフォルトをパスしたくても最終的にはデフォルトであるということを伝えなければならない
いや、ある時点まで黙っていることによって確定するデフォルトが欲しいこともある
0476デフォルトの名無しさん
2009/04/08(水) 20:42:240477デフォルトの名無しさん
2009/04/08(水) 20:49:06引数のだけの問題ならそれこそインライン展開のラッパーで十分
処理を増やしていいなら何とでもなる
それがAPIは糞とどう関連するんだ
0478デフォルトの名無しさん
2009/04/08(水) 20:54:24#include <tchar.h>
int APIENTRY _tWinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {
HWND hwnd;
WNDCLASS winc;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = DefWindowProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return 0;
hwnd = CreateWindow(
TEXT("KITTY") , TEXT("Kitty on your lap") ,
WS_OVERLAPPEDWINDOW ,
100 , 100 , 200 , 200 , NULL , NULL ,
hInstance , NULL
);
if (hwnd == NULL) return 0;
ShowWindow(hwnd , SW_SHOW);
MessageBox(NULL , TEXT("Kitty on your lap") ,
TEXT("Kitty") , MB_ICONINFORMATION);
return 0;
}
0479デフォルトの名無しさん
2009/04/08(水) 20:55:04どういうこと?
0480デフォルトの名無しさん
2009/04/08(水) 20:56:48HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
LPTSTR lpCmdLine ,
int nCmdShow )
0481デフォルトの名無しさん
2009/04/08(水) 20:58:38マップやチャンウで濁してる部分が嫌な感じだな
0482デフォルトの名無しさん
2009/04/08(水) 21:10:39例えば CreateWindow に Indirect がないのは、処理を減らすためだったと思うか?
# 俺は糞という表現は使っていないが、変だと思うところを無理に納得しようとはしていない
0483デフォルトの名無しさん
2009/04/08(水) 21:29:18CreateDialogIndirectはちょっと違うし
あるとすればMessageBoxIndirectぐらいか
0484デフォルトの名無しさん
2009/04/08(水) 21:47:55Indirect を用意するとしたらモードレスの方だと思うけど
0485デフォルトの名無しさん
2009/04/08(水) 21:50:35どうせWin32のそれもXP以降ぐらいしか使ったこと無いようなゆとりだろ
0486デフォルトの名無しさん
2009/04/08(水) 21:56:24LPVOID lpCreateParams;
HANDLE hInstance;
HMENU hMenu;
HWND hwndParent;
int cy;
int cx;
int y;
int x;
LONG style;
LPCSTR lpszName;
LPCSTR lpszClass;
DWORD dwExStyle;
} CREATESTRUCT;
見事に逆順でフイタwww
0487デフォルトの名無しさん
2009/04/08(水) 21:59:05スタック絡みじゃないか
0488デフォルトの名無しさん
2009/04/08(水) 22:02:50CreateDialogIndirectはモードレスなんだが
>>482が言ってる処理とは少し異なる
0489デフォルトの名無しさん
2009/04/08(水) 22:04:46久々に低次元な論争を見た
0490デフォルトの名無しさん
2009/04/08(水) 22:25:16引数だと語呂合わせで覚えてしまえばいいが、
構造体のメンバの名前を一字一句間違えず暗記するのは大変だし入力するにも手間がかかる
先に言っとくがIntelliSenseが当然な時代しか知らないゆとりはレスしなくていいよ
0491デフォルトの名無しさん
2009/04/08(水) 22:25:230492デフォルトの名無しさん
2009/04/08(水) 22:31:39Win16なんてどうでもいい。もう16ビットマシンないでしょ?
あと10年も経ったらWin32なんてどうでもいいよ。Win64が主流になるんだから。
おまえは1950年代のコンピュータ使ったことないだろ?
どうせWin16以降しか使ったことないようなゆとりだろ。
0493デフォルトの名無しさん
2009/04/08(水) 22:33:16覚えるって発想が馬鹿なんだって。意味わかる?
構造体指定より引数がいいって・・・馬鹿かよ。サンデープログラマーだろ?
0494デフォルトの名無しさん
2009/04/08(水) 22:35:490495デフォルトの名無しさん
2009/04/08(水) 22:36:38ゆとり乙
新学期頑張れよ
0496デフォルトの名無しさん
2009/04/08(水) 22:55:12小学生の喧嘩かよwww
0497デフォルトの名無しさん
2009/04/08(水) 22:59:04今時16ビットウィンドウズなんて学ぶどころか知る価値すら無いよ。
0498デフォルトの名無しさん
2009/04/08(水) 23:02:180499デフォルトの名無しさん
2009/04/08(水) 23:08:39小学生は大人しくXP/Vistaを使っててね
0500デフォルトの名無しさん
2009/04/08(水) 23:09:360501デフォルトの名無しさん
2009/04/08(水) 23:11:24「学ぶどころか知る価値すら無い」とか言っちゃってるよwww
0502デフォルトの名無しさん
2009/04/08(水) 23:28:13HOGE hoge = {a, b, c};
って書こうとしたが、これANSI Cでも初期化子に変数とか
コンパイル時定数でない値を指定できないんだっけ。
0503デフォルトの名無しさん
2009/04/08(水) 23:34:210504デフォルトの名無しさん
2009/04/08(水) 23:38:31良かった。
今日の一言に推奨。
0505デフォルトの名無しさん
2009/04/08(水) 23:40:08馬鹿か。そんな書き方するなら引数指定の現状でいいだろ。
0506デフォルトの名無しさん
2009/04/08(水) 23:49:02続けるならここから3レス以内に結論出せ
ウゼエ
0507デフォルトの名無しさん
2009/04/08(水) 23:52:450508デフォルトの名無しさん
2009/04/08(水) 23:54:06↓
0509デフォルトの名無しさん
2009/04/08(水) 23:55:00そんなこと言われても・・・ちょっと困るわ。
0510デフォルトの名無しさん
2009/04/09(木) 00:09:030511デフォルトの名無しさん
2009/04/09(木) 00:12:190512デフォルトの名無しさん
2009/04/09(木) 00:22:30Build81まで続きます。
以上
0513デフォルトの名無しさん
2009/04/09(木) 03:25:16"hwndChild"で子ウインドウをセットできるけど1つしかセットできないですよね
エクスプローラーとか、 コンボボックス(アドレス) ツールバー(移動)
見たいに一行に複数のウインドウが入ってるタイプがあるからどうなってるのかなって、
ウインドウの上にコンボボックスとツールバーをセットしてそのウインドウをセットしてるとかなんですかね??
これが正解的な方法を教えてほしいです。。。
0514デフォルトの名無しさん
2009/04/09(木) 04:34:160515デフォルトの名無しさん
2009/04/09(木) 06:59:122、WM_SIZE:表示内容のサイズの変更
3、WM_PAINT:再描画
ユーザーがウィンドウサイズを変えることによって、
表示内容のサイズもウィンドウに合わせたいのですが、
メッセージが来る順番は、上の1〜3のようになるのでしょうか。
また、一瞬ですが、ウィンドウサイズが変更された後に
表示内容サイズの変更されていないものが
表示されているように見えるのですが、
ウィンドウがない位置に表示してしまって大丈夫なのでしょうか。
(BeginPaintでの描画なら、そこを自動的に調節してくれている?)
0516デフォルトの名無しさん
2009/04/09(木) 07:08:00変更が目に付かないようにするAPIって無いですか?
ウィンドウを小さい腐れたときに隠れてる部分にクリックメッセージを
送りたいので。
0517513
2009/04/09(木) 09:17:09これってレバーコントロールの上にツールバーやコンボボックスをただ並べてるだけなんでしょうか・・・
0518デフォルトの名無しさん
2009/04/09(木) 09:24:25第182章 レバーコントロールの基礎
0519デフォルトの名無しさん
2009/04/09(木) 09:25:030520デフォルトの名無しさん
2009/04/09(木) 09:27:110521デフォルトの名無しさん
2009/04/09(木) 09:32:03適当な親を作ってそれにコンボボックスとツールバーを作ってやればいい
>>514を試したのか?Spy++が無いにしろ親子関係を知る類似のソフトはあるだろ
>>515
WM_SIZEの最後にInvalidateRectでもいれとけばいい
>ウィンドウがない位置に表示してしまって大丈夫なのでしょうか。
描画されるのはウィンドウではなくデバイスコンテキストなので問題ない
>>516
目的のウィンドウがサイズ外のメッセージを処理する設計になっている
かつクリック位置がサイズに影響することなく不変であるなら
ウィンドウのサイズ外でもメッセージを送ることは可能
0522デフォルトの名無しさん
2009/04/09(木) 09:37:25いつのまにか引数のようなどうでもいい話になっているんだ
0524デフォルトの名無しさん
2009/04/09(木) 09:43:45そんなの無くて当然
0525デフォルトの名無しさん
2009/04/09(木) 09:46:21書き込みが終わってることは保障されてるの?
0526デフォルトの名無しさん
2009/04/09(木) 09:49:50だからINIじゃなくてレジストリを使うべきなんだよ
0527デフォルトの名無しさん
2009/04/09(木) 09:51:09マイドキュメントの位置を調べてファイルを作成するとする
SHGetSpecialFolderPathを読んだ後に、CreateFileするまでの間にマイドキュメントが移動されたとしよう
CreateFileが失敗するだろ?これを例外で始末して成功するまでやり直せばいいだけじゃん
どうしてこう頭が固くて応用が利かないんだろう
0528デフォルトの名無しさん
2009/04/09(木) 09:54:08> It is not possible to lock a registry key during a write operation to synchronize access to the data.
> However, you can control access to a registry key using security attributes.
ちゃんと書いてあるね
結局、MSDNをロクに見てない馬鹿が騒いでただけか・・・
0529デフォルトの名無しさん
2009/04/09(木) 09:59:38RegDeleteKeyTransacted
0530デフォルトの名無しさん
2009/04/09(木) 10:01:17マイドキュメントの位置を1�_秒おきに移動するソフトがあるとその実装では困るだろ。
0531デフォルトの名無しさん
2009/04/09(木) 10:04:22ちょっと面白い。
0532デフォルトの名無しさん
2009/04/09(木) 10:07:22別に1�_秒おきに移動しなくてもいい
その一回と>>527の一回が重なった場合の話じゃないのか?
もしかして釣られた?
0533デフォルトの名無しさん
2009/04/09(木) 10:08:501回しか移動しないと、>>527は成功するまでやり直すって言ってるからそのうち成功するよ
0534デフォルトの名無しさん
2009/04/09(木) 10:09:040535デフォルトの名無しさん
2009/04/09(木) 10:11:38やり直しが成功するまでにまた移動したら困るということね
0536デフォルトの名無しさん
2009/04/09(木) 10:45:04思ってたんですけど。
ブラウザの中のボタンとかFirefoxが表示するダイアログとかって、中のコントロール
に一切ハンドルとかが無いのは、どういう仕組みなんですか?
イベントドリブンで動いてないんでしょうか?
0537デフォルトの名無しさん
2009/04/09(木) 10:48:42エディトやコンボボックスも同じ。
0538デフォルトの名無しさん
2009/04/09(木) 10:50:16IEもFirefoxもWindowsコントロール使わずに全部自前で描画、イベント処理してる
0539デフォルトの名無しさん
2009/04/09(木) 10:52:51それとも別の理由が?
0540デフォルトの名無しさん
2009/04/09(木) 11:06:560541デフォルトの名無しさん
2009/04/09(木) 11:10:59IE,Firefox と、標準のコントロールだけで作られた画面見比べてみりゃわかる
負荷は高くなってると思うが、今のCPUパワーなら微々たるもの
0542デフォルトの名無しさん
2009/04/09(木) 12:50:07死にきってないようで、プロセスがタスク・マネージャに残ります?
オーナー・ウインドウから WM_CLOSE を送る方法では駄目なのでしょうか?
それとも、なにか見落としてる手続きがあるのでしょうか? お教えください。
0543デフォルトの名無しさん
2009/04/09(木) 12:57:53別スレッドで子ウインドウ用のメッセージ・ループを回してるって事か?
0544デフォルトの名無しさん
2009/04/09(木) 13:03:30が無いとか・・・じゃないよね
0545デフォルトの名無しさん
2009/04/09(木) 13:17:180546デフォルトの名無しさん
2009/04/09(木) 13:22:580547デフォルトの名無しさん
2009/04/09(木) 13:28:17. | //
ひ ぐ ち か っ た ー | . /
. \ | //
゛""''‐、 、 ────\── ─ .─|─./-/──── ─ --
_,,....,,_ `ヽ、 \ .', `.' |/. / 、.' .' ` . .' 、゚ /
, '" ,; ,..-‐'''' ̄`ヽ゛""''‐、, \ ;.:. / ,|_ / -'. '`. .・ ' / ´、 ,
. ,' ,;: ,. ', ヽ \//|. / \;.'.'‐ `:.. ' ;:/ '
/ ;: ;; y' "  ̄`'ヽ. i /\|^|/.'o^ |!;.' ;.'`:.'´;./': ; :
,' ;;: ノ ノ人リ)ゝ ;;. | /. .,::.'\/|_/;:;.': ・ /
! ,;;;: ,,;;J J ^ω^し:;;'' .ノ . / ・..' /\i|" ;.'. '. .'/: .'
i '';;: ;: ;;,'':;i`y'_i,;;;:::'' / .、´. '` / \; : ;.'´./ ,`: ; ´
' , ,く,/,_,_r ;ゝ , / . /. | ,'\/
ヽ、 !,ン'´ '-´ / / / . | /\ . ` '
` , .' . / . / |/ \
/ ./ / /| . \
─━━‐ ./ / | \
. / / . | \
0548デフォルトの名無しさん
2009/04/09(木) 13:29:030549デフォルトの名無しさん
2009/04/09(木) 13:42:16一緒に表示させるようにしたいんですが、どうすればできますか?
自分のところにLVITEM構造体作って設定を入れ、ListView_InsertItemしても無理で
アドレスのせいかと思い、共有メモリを作ってそこにLVITEM入れ、そのアドレスをListView_InsertItem
でSendMessageや、VirtualAllocExで相手のプロセスに領域確保、WriteProcessMemoryでLVITEM構造体の
書き込み、そしてListView_InsertItemでそのアドレスをSendMessageなどしたんですが相手のソフトが
「動作を停止しました」になってしまう。
やっぱり相手のソフトに無理矢理DLLを読み込ませる→そのDLLの中で項目追加
しかないんでしょうか?できるだけDLL使いたくないんですが
0550デフォルトの名無しさん
2009/04/09(木) 13:58:54VirtualAllocExの方法でいけると思うが
リストビューのあるプロセスを自分で作って試してみたらどうだ、debugも出来るし
0551デフォルトの名無しさん
2009/04/09(木) 14:02:59lParamが独自データへのポインタだったり
0552デフォルトの名無しさん
2009/04/09(木) 14:07:22まあ、相手次第だが
0553デフォルトの名無しさん
2009/04/09(木) 14:23:32調べる方法がありましたら教えてください。
最小化、最大化はあるんですが。
0554デフォルトの名無しさん
2009/04/09(木) 14:26:250555553
2009/04/09(木) 15:01:40ありがとうございます。
SIZE_RESTOREDは通常サイズ同士のWM_SIZEの場合も同じなんですよね。
GetWindowLongのWS_MINIMIZEを予め調べておく方法も使えば
やれそうな気がするので、これでやってみます。
0556デフォルトの名無しさん
2009/04/09(木) 15:29:21ありがとう落ち着いてやったらVirtualAllocExで確保LVITEMの書き込みでリスト
項目追加できました。でもリストの名前が空白でちゃんと入らない
(構造体LVITEM).pszTextに入れる文字列用にVirtualAllocExで領域を確保して、そこに
文字を入れる。でLVITEM.pszTextにそのアドレスを入れるで合ってますよね?
とりあえずリストビューだけのウィンドウを作ってそれで試してますがそれでも
上手くいきません。もちろんそれに追加のコード書いたらちゃんと追加されるけど
なんでだああああ
0557デフォルトの名無しさん
2009/04/09(木) 15:38:55char text[x]=文字入ってる
size=textのサイズ
RemoteStrMemory = (LPSTR)VirtualAllocEx(hProcess, NULL,size,MEM_COMMIT,PAGE_READWRITE);
DWORD dwData;
WriteProcessMemory(hProcess, RemoteStrMemory,
(PVOID)text,size, &dwData);
//エラー処理省く dwDataはちゃんとtextのバイト数になってて、0も返ってきてませんでした
LVITEM item;
item.mask = LVIF_TEXT;
item.pszText =RemoteStrMemory;
item.iItem = 0;
//LVITEMの書き込み VirtualAllocExで確保WriteProcessMemoryで書き込み
ListView_InsertItem(hList,LVITEMを書き込んだアドレス);
0558デフォルトの名無しさん
2009/04/09(木) 15:48:090559デフォルトの名無しさん
2009/04/09(木) 16:02:49こんな感じで
RemoteItemMemory = VirtualAllocEx(hProcess, NULL, sizeof(&item), MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, RemoteItemMemory,(PVOID)&item, sizeof(&item), NULL);
0560デフォルトの名無しさん
2009/04/09(木) 17:36:29環境は Vista で、 VC++ 2008 Express を使っています。
ウィンドウアプリケーションのプロジェクトを作って、スケルトンとして提供される About ダイアログの表示部分を変更したところ、
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
では、正常に表示されますが、
DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, AboutInDLL);
では、Access Violation のエラーが表示されます。
AboutInDLL は、リンクする DLL の中で定義したダイアログプロシージャの関数です。
hInst を DLL のモジュールハンドルに変更したところ、
リソースが見つからないというエラーが DialogBox 関数呼び出しの直後の GetLastError 関数が返しました。
リソースがアプリケーションに定義してあり、プロシージャが DLL に定義されている場合は、どのようにすれば良いのでしょうか?
何か、ヒントでも良いので、知っている方がいらっしゃったらよろしくお願いします。
0561デフォルトの名無しさん
2009/04/09(木) 18:31:230562デフォルトの名無しさん
2009/04/09(木) 18:36:05ふぅこんなのに8時間もかけてしまったぜ
0563560
2009/04/09(木) 18:38:32DLL は起動時動的リンクでロードされているみたいです。
すいません。
About を DLL にそのまま移植して呼び出したところ、何の問題もなく表示されました。
さきほど試したのは、 クラス定義のもので、オブジェクト経由だったので、他の原因があるようです。
スレを荒らしてしまい申し訳ありませんでした。
また、 561 さんを始め、考えてくださった方にはお礼とお詫びを申し上げます。
すいませんでした。
あつかましいですが、また何かありましたらよろしくお願いします。
0564デフォルトの名無しさん
2009/04/09(木) 21:46:56EnumWindowsProcでHWND列挙、(HINSTANCE)GetWindowLong、GetModuleFileName
でファイル名を取得して、ShellExecuteExで使ったファイル名と比較して同じファイル名
のHWNDを取得。と考えたんだけどShellExecuteExで起動させたからかそのファイル
だけEnumWindowsProcでこないのは何ででしょ?
0565デフォルトの名無しさん
2009/04/09(木) 22:08:41出したいんですけど、どうすればいいですか?今はGetSystemMenuとTrackPopupMenuで出してるんですが
これだと、同じ項目を2回選べなくなったりと不都合が出るんです。
0566デフォルトの名無しさん
2009/04/09(木) 22:09:09あとは、EnumWindowsProc()で取得したウィンドウハンドルに対してGetWindowThreadProcessId()で
プロセスIDを取得し、取得したプロセスIDからプロセスハンドルを取得して、先のプロセスハンドルと比較すればよろし。
同じ実行ファイルが複数起動していた場合、ファイル名の比較では要を成さない。
0567デフォルトの名無しさん
2009/04/09(木) 22:25:11全然一致しないんだけど
0568デフォルトの名無しさん
2009/04/09(木) 22:32:41その質問単独ならYesと答えるところだが、>>566が間違っているな。
IDは一意だと決まっているが、ハンドルはそうとは限らないから同一判定には使えない。
(いい例が複製を作るDuplicateHandle。複製先と複製元は同じ実体を指すが、ハンドルの値は異なる)
ShellExecuteExで得たプロセスハンドルからGetProcessIdでプロセスIDを取得して、
それとGetWindowThreadProcessIdから得たプロセスIDを取得するようにすればいい。
0569513
2009/04/09(木) 22:36:41ここに載ってました、>>521さんいうやり方が正解だったみたいです
|・ω・)ノ どもです
>>514 >>518-521
今後はSpy++で確認してもうちょっと自分で調べてから質問します (´・ω・`) ゴメンナサイ
0570デフォルトの名無しさん
2009/04/09(木) 22:37:41RemoteItemMemory = VirtualAllocEx(hProcess, NULL, sizeof(item), MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, RemoteItemMemory,(PVOID)&item, sizeof(item), NULL);
サイズが間違ってる
0571デフォルトの名無しさん
2009/04/09(木) 22:58:14おおありがとううまくできた
0572542
2009/04/10(金) 06:40:20死にきってないようで、プロセスがタスク・マネージャに残ります?」
シングルスレッドのアプリなんですが、メッセージループを持つ子ウインドウを
開いたまま、オーナーウインドウを終了させるとオーナーのウインドウクラスの
PostQuitMessage() ほか UnregisterClass() が実行されません。
なにか基本的な勘違いしてるようなのでヒントお願いします。
オーナー、子ともメッセージループは以下のとおり、
while(GetMessage(&msg,NULL,0,0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
GetMessage()の第2引数を変えると返って変になるし、よくわかりませんが…、、、
0573デフォルトの名無しさん
2009/04/10(金) 07:17:36> シングルスレッドのアプリなんですが、メッセージループを持つ子ウインドウを
他のプロセスのウィンドウをオーナーにしてるのか?
違うなら子ウィンドウにメッセージループはいらない
0574デフォルトの名無しさん
2009/04/10(金) 07:23:37オーナー・ウインドウ
タスク・マネージャ
「猫でもを見て勉強しました」感が物凄いんだがw
0575デフォルトの名無しさん
2009/04/10(金) 08:02:29メッセージループを持つ子ウインドウってどう言う事だ
さほど意味も無く書いたのか、そうじゃないなら具体的に書いてくれ
PostQuitMessageはどこで実行してる
普通はプライマリウィンドウのWM_DESTROYあたりで実行してやる
0576572
2009/04/10(金) 08:46:321) TreeViewの子ウインドウを開きたいが、ダイアログ・テンプレートでは使えない機能が
あり、CreateWindowExを使ってTreeViewを作成している。
2) 独立したTVプロシージャ−を作りたいが、CreateWindowEx()ではTVのプロシージャ−を指定できないので
TVウインドウの親ウインドウを作り(クラス名を登録しメッセージループを作成)、
TV親ウインドウのオーナーとして、アプリケーションのメインウインドウを設定している。
MSDNをがんばって読むと、『クラスの登録 = プロセスの生成』みたいなことが
かいてあったので、出直してきますが、勘違いのご指摘おながいします。
0577デフォルトの名無しさん
2009/04/10(金) 09:08:38メインウインドウ
└TV親ウインドウ
└TreeView
メインウインドウのメッセージループがあるのにTV親ウインドウにもメッセージループを作成したってことか?
シングルスレッドでどうやったんだ
0578デフォルトの名無しさん
2009/04/10(金) 09:27:15通常コントロールは子ウインドウとして使う
プロシージャを指定できるサブクラス化というものがある
クラスの登録 ≠ プロセスの生成
>>577おそらくこうじゃないか
┌メインウインドウ
└TV親ウインドウ
└TreeView
どう実装したかは知らないがメッセージループは一つでいい
0579デフォルトの名無しさん
2009/04/10(金) 10:17:242) 独立したTVプロシージャ−を作りたいが、CreateWindowEx()ではTVのプロシージャ−を指定できないので
そのためのサブクラス化でつよ
hTreeView = CreateWindowEx(...);
WndProcOld = GetWindowLong(hTreeView, GWL_WNDPROC);
SetWindowLong(hTreeView, GWL_WNDPROC, (LONG)WndProcTreeView);
0580デフォルトの名無しさん
2009/04/10(金) 10:53:13> あり、CreateWindowExを使ってTreeViewを作成している。
これの意味が解らんのだが、ダイアログエディタで設定できないスタイルフラグがあるって事か?
WM_INITDIALOGでSetWindowLong(GWL_STYLE)かTreeView_SetExtendedStyleを叩けばいいだろ
0581デフォルトの名無しさん
2009/04/10(金) 12:29:19DefWIndowProcかそれに相当する自前処理へ行かないルートがあるんじゃねーの?
0582デフォルトの名無しさん
2009/04/10(金) 12:34:22TreeView_SetExtendedStyleを叩けばいい…
そんなものもあるのですね。驚愕です。
『ここは、APIの宝石箱や〜』 タコ麻呂
0583デフォルトの名無しさん
2009/04/10(金) 14:25:50>ここは、APIの宝石箱や〜
米国MSDNサイトで言ってくれよ。。。
0584デフォルトの名無しさん
2009/04/10(金) 21:12:410585デフォルトの名無しさん
2009/04/10(金) 21:53:200586デフォルトの名無しさん
2009/04/11(土) 14:30:05ImmGetOpenStatusなどのImm系のAPIがコマンドプロンプトでは使えないようです。
keybd_eventでVK_KANJIを押してやることで、IMEのON/OFFすることはできましたが、
現在の状態を取得する方法を探しています。
0587デフォルトの名無しさん
2009/04/11(土) 18:15:26親はそのままアクティブで、作業している子ウィンドウもアクティブにすることはできますか
簡単に言うとphotoshopと同じ感じに
0588デフォルトの名無しさん
2009/04/11(土) 20:05:11親ウィンドウからはみ出すコントロールって作れる?
0589デフォルトの名無しさん
2009/04/11(土) 20:38:350590デフォルトの名無しさん
2009/04/11(土) 20:38:560591デフォルトの名無しさん
2009/04/11(土) 20:53:35最初にそれを考えたんだけど
WS_CHILDと併用するとコントロール作れなくてさ
>>590
やっぱそれしかないよね
ありがと
0592デフォルトの名無しさん
2009/04/11(土) 21:23:10WS_CHILDで作成して内部の動作的には問題ないのですが
子のタイトルバーが非みたいになって困っているというものです
色々なapiで試しても操作対象の子ウィンドウのタイトルバーがオンにならないです
どなたかわかる方お願いしますー
0593デフォルトの名無しさん
2009/04/11(土) 21:27:450594デフォルトの名無しさん
2009/04/12(日) 00:07:58(Cls_OnPaintなど)の Cls_ って何の略でしょうか?
自分はClassだと勝手に思っていますが。
0595デフォルトの名無しさん
2009/04/12(日) 00:51:50WM_NCACTIVATEでFALSEを返す
0596デフォルトの名無しさん
2009/04/12(日) 03:36:23それでぐぐって色々試しましたがやり方がわかりませんでした…
最初からならないで、一旦他アプリから切り替えるとオンになったり
子ウィンドウ全部がアクティブになりっぱなしになったり
どういうタイミングでやるのか何か参考になるものとかないでしょうか
0597デフォルトの名無しさん
2009/04/12(日) 04:47:220598デフォルトの名無しさん
2009/04/12(日) 08:48:54結局全ての子ウィンドウを親ウィンドウのアクティブ状態と同じにしたいということですか?
それなら、例えば BOOL flgActive というフラグを作って、親ウィンドウのACTIVATEで
親が非アクティブになったかどうかを判定して、flgActive をアクティブならTRUE、非アクティブなら
FALSEにして、子ウィンドウのWM_NCACTIVATE の wParamをいつでもどこでも全部flgActivateに
差し替えて、デフォルトのプロシージャに渡してやれば、強制的にそういう動作になります。
そういう実装の是非はともかく、最も簡単にご希望の動作が実現できます。
0599デフォルトの名無しさん
2009/04/12(日) 09:31:18photoshopとか自前だろ
0600デフォルトの名無しさん
2009/04/12(日) 10:57:180601デフォルトの名無しさん
2009/04/12(日) 11:42:56一寸見直したぜ。
0602デフォルトの名無しさん
2009/04/13(月) 19:35:06今はSuspendThread後、SetThreadContextでEIPを0にしてるという。。。
0603デフォルトの名無しさん
2009/04/13(月) 20:03:120604602
2009/04/13(月) 20:20:47RaiseExceptionは呼び出し元スレッドに対してにしか起こせないような希ガス
thread idとか指定して別プロセスで走ってるスレッドにも例外起こしたいです
0605デフォルトの名無しさん
2009/04/13(月) 22:48:2264bitなのでしょうか? 32bitなのでしょうか?
ハンドル型が64bitになっているのは当然ですが、実際にウィンドウハンドルとして
0x100000000以上の値があり得るのかということです。
32bitアプリケーションと64bitアプリケーションでメッセージのやりとりが
できなくなっている様子もありませんし、互換性のためにウィンドウハンドルの
値について、なんらかの保証があるのかと思ったものですから。
0606デフォルトの名無しさん
2009/04/13(月) 23:26:180607デフォルトの名無しさん
2009/04/14(火) 00:15:10少なくともここには32ビットと64ビットでウィンドウハンドルは共有できると書いてある。
http://msdn.microsoft.com/en-us/library/aa384203.aspx
32ビットと64ビットとの間でウィンドウハンドルをやり取りするときに
OSがハンドルの値を勝手に変換するという実装だって、
理屈の上では可能なはずだから、短絡的にハンドルの値が32ビットで収まる仮定をするのは
個人的にはどうかと思うけど。
0608デフォルトの名無しさん
2009/04/14(火) 00:20:50心配ありがとう
頭には...けがありませんが....
0609デフォルトの名無しさん
2009/04/14(火) 00:24:51たしか32ビットのままだったはず。
少なくとも64ビット版Spy++でみた限りでは、
ウィンドウハンドルは全て32ビット値になっている。
0610605
2009/04/14(火) 00:29:13ありがとうございます。MSのドキュメントがあれば一安心です。
32bitプロセスからのEnumWindowsで64bitプロセスのウィンドウが取得でき、
メッセージも送れることから、多分下位32bitしか使っていないんだろうと思ってはいたんです。
0611デフォルトの名無しさん
2009/04/14(火) 00:31:58> OSがハンドルの値を勝手に変換するという実装だって、
> 理屈の上では可能なはずだから、
そうなると、64ビットのプロセスが自分で取得したウィンドウハンドルを32ビット
プロセスに渡せないことにならないか?
0612デフォルトの名無しさん
2009/04/14(火) 00:45:560613デフォルトの名無しさん
2009/04/14(火) 00:46:020614デフォルトの名無しさん
2009/04/14(火) 00:47:330615デフォルトの名無しさん
2009/04/14(火) 01:44:14あーごめん。たしかにそう、好き勝手に受け渡ししていたらだめだね。
0616デフォルトの名無しさん
2009/04/14(火) 04:16:420617デフォルトの名無しさん
2009/04/14(火) 04:47:47どこの32bitもどきWindowsの話だよ
0618デフォルトの名無しさん
2009/04/14(火) 05:13:560619デフォルトの名無しさん
2009/04/14(火) 05:51:46上位16bitを切り捨てたウィンドウハンドルにSetWindowTextしても普通に動作した。
何の値なんだこれ。
0620デフォルトの名無しさん
2009/04/14(火) 06:23:280621デフォルトの名無しさん
2009/04/14(火) 06:29:41上位16ビット=再利用カウンタ
例えば、0x1234というHWNDが最初に使用されるときは0x11234で、次に使用されると0x21234、・・・
DestroyWindowされてHWNDが回収されるまでは下位16ビットは衝突しない。
つまり生存可能なHWNDの上限は32767個ってこと。
0622デフォルトの名無しさん
2009/04/14(火) 07:02:52Webだと、「アドレスです」とか書いてあることがあるけど、複数プロセスで共有できる
ハンドルがただのポインタなわけがないだろうと。
0623デフォルトの名無しさん
2009/04/14(火) 07:17:320624デフォルトの名無しさん
2009/04/14(火) 07:31:290625デフォルトの名無しさん
2009/04/14(火) 07:54:47NTもそんな感じだろ
0626デフォルトの名無しさん
2009/04/14(火) 13:26:22ハンドル=インデックス
っぽいね。
0627taguti
2009/04/14(火) 16:13:36(x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。
・公式:底辺x高さ÷2を使って計算してください。
お願いします!!
0628デフォルトの名無しさん
2009/04/14(火) 16:14:360629デフォルトの名無しさん
2009/04/14(火) 18:56:420630デフォルトの名無しさん
2009/04/14(火) 19:02:58規制で書き込めませんでした
NCACTIVATEだけにこだわったり色々勘違いしてたようです
TOOLWINDOWしないで考えていたんですが
結局598さんとほぼ同じ感じでやりましたありがとうございました
0631デフォルトの名無しさん
2009/04/14(火) 20:48:52プロセスのヒープハンドルを使ってメモリ確保を行い、
そのアドレスを戻り値として返した後に
B()という関数のパラメータにそのアドレスを渡して
またGetProcessHeapを使って取得したプロセスの
ヒープハンドルでHeapFreeを行うのは可能でしょうか?
多分プロセスのヒープハンドルなので可能だと思うのですが
こういうやり方(都度GetProcessHeap)ってあまりやらない方が
いいのですかね?皆さんは普段どうやってますか?
※一番聞きたかったのはここです
宜しくお願いします。
0632デフォルトの名無しさん
2009/04/14(火) 20:52:50プログラムの設計の話ならスレ違いだから他所でやってね。
0633デフォルトの名無しさん
2009/04/14(火) 21:02:54毎回戻り血チェックとかめんどくさいから
俺は構造体に突っ込んで渡してるよ
0634デフォルトの名無しさん
2009/04/14(火) 21:04:10お前がスレ違いだから二度と来るな
0635デフォルトの名無しさん
2009/04/14(火) 21:10:32いちいち構造体で管理するのこそ面倒すぎじゃね?
プロセスのヒープハンドルなんだからエラーになる事はまずないだろJK
0636631
2009/04/14(火) 21:49:31自分なりに考えてやってみます
0637デフォルトの名無しさん
2009/04/14(火) 21:54:05ハンドルリーク?
0638デフォルトの名無しさん
2009/04/14(火) 22:00:56ハンドルリーク!
0639デフォルトの名無しさん
2009/04/14(火) 22:14:51ハソドノレリーク
0640デフォルトの名無しさん
2009/04/14(火) 22:19:56ハンドルもクローズ関数のある物だから使い終わったら閉じないといけないものがある。
0641デフォルトの名無しさん
2009/04/14(火) 22:56:38でのデフォルト設定で右下に表示される、自分自身のWindowの
縮小プレビューをどうやって実現することができますか?。
API関数とあとは、領域に描画すればいいと考えています。
そのAPI関数を教えて下さい。
0642デフォルトの名無しさん
2009/04/14(火) 23:13:18それと>>631の質問に何の関係も無いだろ
偉そうに知ったような口利くな馬鹿
0643デフォルトの名無しさん
2009/04/14(火) 23:29:390644デフォルトの名無しさん
2009/04/14(火) 23:37:110645デフォルトの名無しさん
2009/04/14(火) 23:41:380646デフォルトの名無しさん
2009/04/14(火) 23:43:260647デフォルトの名無しさん
2009/04/15(水) 00:39:41試した結果一番あやしいのがこれだったんよ
けど理屈がわからん
0648デフォルトの名無しさん
2009/04/15(水) 01:44:05オマンコ採用試験
0649デフォルトの名無しさん
2009/04/15(水) 01:57:33やるとしてもこのAPI知らずにFind系を一定間隔でループさせてるだけの人が多そうだし、
知ってる人は居ないだろう。
単に監視処理が内部で重複しながら溜まってるんだろうとは思うけど。
0650デフォルトの名無しさん
2009/04/15(水) 02:00:280651デフォルトの名無しさん
2009/04/15(水) 09:47:31>>636
遅レスで申し訳ないが、問題ない。
::GetProcessHeap()が返すヒープのハンドルは、OSが確保しているので、
同一プロセスから呼び出された場合、常に同じハンドルを返す。
例えば、
HANDLE h0 = ::GetProcessHeap();
HANDLE h1 = ::GetProcessHeap();
とすると、h0 == h1 になる。やってみれば分かるよ。
もちろんOSが確保している空間なので勝手に削除してはいけない。
だから::GetProcessHeap()の返すハンドルは、呼び出して使って後は
知らんぷりでOK。
0652デフォルトの名無しさん
2009/04/15(水) 09:54:10それ以前に、間に待機関数を入れずに同じハンドルでそんなことしたら、
変更の通知漏れが出来るとMSDNに書いてあるぞ。
0653デフォルトの名無しさん
2009/04/15(水) 09:55:51それ見たことないし、やったこともないけど、単純に考えたら ::GetWindowDC()。
0654デフォルトの名無しさん
2009/04/15(水) 11:25:55思っているんですが、ExtractIcon、ExtractIconEx等でHICONで取り出した
アイコンを保存すると、必ず16色モードの単一アイコンとして保存されます。
Googleで調べてみた感じでは、どうやら仕様らしいのですが
世にあるアイコン抽出ソフトはどうやってdllなどからアイコンを取り出し
ちゃんとグループアイコンとして保存しているのでしょうか?
ExtractIconなどを使わないでdllなどからアイコンを取得する方法が他にあるんでしょうか?
0655デフォルトの名無しさん
2009/04/15(水) 11:50:190656デフォルトの名無しさん
2009/04/15(水) 11:53:52CodeProjectからダウンロードしたサンプルコードを見れ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9030.zip
0657デフォルトの名無しさん
2009/04/15(水) 11:54:570658654
2009/04/15(水) 12:57:04>>656
>>657
ありがとうございます。
手軽には出来そうもないですね。
頂いた情報をこれから詳しく調べて
自分なりに作ってみます。
0659デフォルトの名無しさん
2009/04/15(水) 13:40:48マジっすか、MSDNは見たつもりだったけど違う場所見てたのかなorz
何はともあれ黒であることがはっきりして良かったわ、�d
0660デフォルトの名無しさん
2009/04/15(水) 16:46:11Win32APIでも内部的にはソフトウェア割り込みしてるんですか?
例えばcall MessageBoxAみたいに一見関数を呼び出してるように見えるんですが、
MessageBoxA関数内でint命令を使ってるんでしょうか
それとも、win32APIは割り込みとは別の仕組み?
0661デフォルトの名無しさん
2009/04/15(水) 16:51:23各APIの先頭アドレスがずらっと入ってる配列(ServiceDescriptorTable)を用意してる
らしい
0662デフォルトの名無しさん
2009/04/15(水) 17:12:55call fword ptr [callgatework]
WindowsNT/2000(x86)
int 02Eh
WindowsXP or later(x86)
sysenter
WindowsXP or later(x64)
syscall
0663デフォルトの名無しさん
2009/04/15(水) 18:18:240664デフォルトの名無しさん
2009/04/15(水) 18:34:23int 021h
0665デフォルトの名無しさん
2009/04/15(水) 18:46:470666デフォルトの名無しさん
2009/04/15(水) 18:51:450667デフォルトの名無しさん
2009/04/15(水) 18:57:05どうでもいい質問するな
0668デフォルトの名無しさん
2009/04/15(水) 19:36:31int 0x80
0669デフォルトの名無しさん
2009/04/15(水) 20:45:40となります。ぐぐりましたが、大概は無視してOKとかいてあるんですが
根本的な原因がわかりません。どうしたらこの警告がでなくなりますか?
0670デフォルトの名無しさん
2009/04/15(水) 20:51:01ヒント:ヘルプ
答え:スレ違い
0671デフォルトの名無しさん
2009/04/15(水) 20:51:040672デフォルトの名無しさん
2009/04/15(水) 20:55:300673デフォルトの名無しさん
2009/04/15(水) 20:57:370674デフォルトの名無しさん
2009/04/15(水) 21:27:240675デフォルトの名無しさん
2009/04/15(水) 21:29:510676デフォルトの名無しさん
2009/04/15(水) 21:54:380677デフォルトの名無しさん
2009/04/15(水) 22:05:400678デフォルトの名無しさん
2009/04/15(水) 22:06:280679デフォルトの名無しさん
2009/04/15(水) 22:09:090680デフォルトの名無しさん
2009/04/15(水) 22:12:25八卦とは占いのことですか。
うちのプロジェクトリーダーは重大事の前には占いをよくやってますが、
見当違いのことばかりです。
良いとはとても思えません。
0681デフォルトの名無しさん
2009/04/15(水) 22:34:270682デフォルトの名無しさん
2009/04/16(木) 00:19:39マウスカーソルをワープさせるアプリを作ろうしていて
困った状況になってしまいました。アドバイスを頂け
ないでしょうか。
Vistaでリモートアシスタンスが最前面の状態だと
SetCursorPosが失敗します。でもGetLastErrorは正常終了を
返してきます。
これはVS2005以降で作れば解決するのでしょうか?
0683デフォルトの名無しさん
2009/04/16(木) 01:35:260684デフォルトの名無しさん
2009/04/16(木) 01:59:230685デフォルトの名無しさん
2009/04/16(木) 02:06:33>>682
VS2010でも解決しないだろうな。走るコードが変わらない以上。
とはいえ、VC6は古すぎだ。さっさと捨ててVC2008EEでも入れておけ。
カーソルの話はWindowsSDK読めとしか。
OpenInputDesktop/SetThreadDesktopがどうのこうの書いてあるので、
もしかすると何か関係あるのかもしれんね。
0686デフォルトの名無しさん
2009/04/16(木) 02:07:160687デフォルトの名無しさん
2009/04/16(木) 02:21:52できるだけ強烈な奴をお願いします。
0688デフォルトの名無しさん
2009/04/16(木) 02:33:410689デフォルトの名無しさん
2009/04/16(木) 02:41:010690デフォルトの名無しさん
2009/04/16(木) 02:47:38やっぱ時代はVBだよな
0691デフォルトの名無しさん
2009/04/16(木) 02:51:030692デフォルトの名無しさん
2009/04/16(木) 03:16:09いや、APIと言語の区別くらいついてるぞ。
何で今更Win32プログラミングをVC++でやるの?って話。
C#でいいじゃんか。.NETはCOMでWin32叩いてるわけでしょ?
何が不満でAPI使ってんの?単純な疑問。
0693デフォルトの名無しさん
2009/04/16(木) 03:55:170694デフォルトの名無しさん
2009/04/16(木) 04:05:42System.Runtime.Interop使わずに呼び出せるようになれよ
0695デフォルトの名無しさん
2009/04/16(木) 04:24:48tatorba
0696デフォルトの名無しさん
2009/04/16(木) 10:18:38なるほどね
そういう大きな勘違いしてる馬鹿が.NETマンセーしてるって事がよく分かった
0697デフォルトの名無しさん
2009/04/16(木) 12:16:05どこが勘違い?まったくもって真実なんだけど。
お前の理解度が恐ろしいぜ。その程度の理解でプログラム組むなよ?な?
0698デフォルトの名無しさん
2009/04/16(木) 13:03:130699デフォルトの名無しさん
2009/04/16(木) 13:07:11COMオブジェクトの実体は.Netで実装されているかもしれないしWindows以外かもしれない
普通わざわざCOMなんて経由せずにはP/Invokeを使うだろうし
0700デフォルトの名無しさん
2009/04/16(木) 13:17:110701デフォルトの名無しさん
2009/04/16(木) 13:46:06「C#でいいじゃん」とか言ってるけど本当はVBしか知らない人だよ。
.NETマンセーしたいけどVB持ち出すと馬鹿にされるから、C#とか言っちゃってるだけ。
C#なんて「VBをC++風にした言語じゃね?」程度の感覚だから。
0702デフォルトの名無しさん
2009/04/16(木) 13:50:46ネタに付き合ってあげるお前らは偉いね
0703デフォルトの名無しさん
2009/04/16(木) 13:57:13同一人物が定期的に煽りに来てるのか?
0704デフォルトの名無しさん
2009/04/16(木) 14:03:35目的に応じて適切な手段を選ぶのが当たり前だ。
最もそれ以前にここはwin32APIのスレだから、それの話だけにしとけよ。なっ。
0705デフォルトの名無しさん
2009/04/16(木) 14:08:44構ってチャンには打ってつけのスレだろ
0706デフォルトの名無しさん
2009/04/16(木) 14:13:040707デフォルトの名無しさん
2009/04/16(木) 14:19:400708デフォルトの名無しさん
2009/04/16(木) 18:04:470709デフォルトの名無しさん
2009/04/16(木) 18:09:420710デフォルトの名無しさん
2009/04/16(木) 19:22:490711デフォルトの名無しさん
2009/04/16(木) 19:28:05by目覚まし
0712デフォルトの名無しさん
2009/04/16(木) 20:04:400713デフォルトの名無しさん
2009/04/16(木) 20:11:24てかWin32どころか.NETの知識さえロクに無いくせに
よくまあ懲りずに煽れるもんだねぇ
0714デフォルトの名無しさん
2009/04/16(木) 20:21:270715デフォルトの名無しさん
2009/04/16(木) 20:23:150716デフォルトの名無しさん
2009/04/16(木) 20:38:230717デフォルトの名無しさん
2009/04/16(木) 20:49:070718デフォルトの名無しさん
2009/04/16(木) 22:11:350719デフォルトの名無しさん
2009/04/16(木) 22:44:490720デフォルトの名無しさん
2009/04/16(木) 22:46:59目覚ましと時計です
0721デフォルトの名無しさん
2009/04/16(木) 22:47:550722デフォルトの名無しさん
2009/04/16(木) 22:48:55あれから僕は夢の中のままだ――
0723デフォルトの名無しさん
2009/04/16(木) 22:53:21ホラーだな
0724デフォルトの名無しさん
2009/04/17(金) 00:31:02.NETで目覚まし時計作っただけでもすごいじゃん
けっきょくなにも作れずに挫折するやつ大勢いるようだしさ
API使えるほどの人間ならもっと大きな心で堂々としてればいいじゃん
0725デフォルトの名無しさん
2009/04/17(金) 00:48:200726デフォルトの名無しさん
2009/04/17(金) 00:50:010727デフォルトの名無しさん
2009/04/17(金) 00:52:430728デフォルトの名無しさん
2009/04/17(金) 01:02:470729デフォルトの名無しさん
2009/04/17(金) 01:52:23>API使えるほどの人間ならもっと大きな心で堂々としてればいいじゃん
は、正しくは
APIしか使えなくて偏屈になっているから諦めれだろ
0730デフォルトの名無しさん
2009/04/17(金) 01:57:05だからほっといてくれ
0731デフォルトの名無しさん
2009/04/17(金) 02:36:13真夜中に応答ありがとうございます。一応事前にSDKには目を通していたんですが
リモートアシスタンスの時だけのために・・・・・いえ、正確にはタスクスケジューラ
とかコンピュータの管理とかが最前面の時も同様にSetCursorPosが失敗するんですが
これだけのためにデスクトップとかウィンドウステーションとか考慮が必要なのは
私にはハードルが高いなあと感じておりました。
上記のアプリさえ最前面でなければ問題は表面化しないので・・・うーん、つまらん
拘りなのかなと思えてきたところです。
0732デフォルトの名無しさん
2009/04/17(金) 02:58:41P/Invoke?そんなことは知ってる。
誰かCOMに反論してたけど未だにWindows理解できてない奴だね。
0733デフォルトの名無しさん
2009/04/17(金) 03:49:04732にレスつけたら強制的に自演扱いするから
0734デフォルトの名無しさん
2009/04/17(金) 04:09:490735デフォルトの名無しさん
2009/04/17(金) 06:36:200736デフォルトの名無しさん
2009/04/17(金) 10:13:340737デフォルトの名無しさん
2009/04/17(金) 10:16:390738デフォルトの名無しさん
2009/04/17(金) 10:49:22dllやexeからアイコンを抽出する方法
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9037.zip
0739デフォルトの名無しさん
2009/04/17(金) 10:50:170740デフォルトの名無しさん
2009/04/17(金) 10:54:00仕切るなハゲ
0741デフォルトの名無しさん
2009/04/17(金) 10:54:02いちいち煩いんだよクズ
0742デフォルトの名無しさん
2009/04/17(金) 10:55:12脳味噌腐ってるんじゃねーの?www
0743デフォルトの名無しさん
2009/04/17(金) 10:56:31さっさと消えろ
0744デフォルトの名無しさん
2009/04/17(金) 10:59:45偉そうにキモイんだよ
0745デフォルトの名無しさん
2009/04/17(金) 14:13:430747デフォルトの名無しさん
2009/04/17(金) 21:33:33信じられないよ、ほんとに信じられないよ
目覚ましと仲間スレに、ソースコード、それも一式うpしてくれる人がいるなんて
まだまともなのはこのスレで目覚ましの類と交わると目覚ましレベルに超進化するから、
他のスレに逝ったほうが良いよ
by目覚まし
0748デフォルトの名無しさん
2009/04/17(金) 21:47:46日本語でおk
0749デフォルトの名無しさん
2009/04/17(金) 22:01:050750デフォルトの名無しさん
2009/04/17(金) 22:06:160751デフォルトの名無しさん
2009/04/17(金) 22:08:360752デフォルトの名無しさん
2009/04/17(金) 22:09:470753デフォルトの名無しさん
2009/04/17(金) 22:13:410754デフォルトの名無しさん
2009/04/18(土) 07:36:31CPU使用率こんな風にリアルタイムで表示したいんですけど
使用率の数値の取得は出来たんですがタイトルの部分に持ってくる方法がいまいちわかりません。
優しいお兄さん待ってます。お尻の穴は貸せません。。。
0755デフォルトの名無しさん
2009/04/18(土) 07:39:28http://www.vector.co.jp/soft/winnt/prog/se361629.html
0756デフォルトの名無しさん
2009/04/18(土) 07:42:21SetWindowText
0757デフォルトの名無しさん
2009/04/18(土) 10:46:24>>756
やってみます(`・ω・´)ゞビシッ!!
0758デフォルトの名無しさん
2009/04/18(土) 19:04:570759デフォルトの名無しさん
2009/04/18(土) 19:13:570760デフォルトの名無しさん
2009/04/18(土) 20:41:360761デフォルトの名無しさん
2009/04/18(土) 21:32:020762デフォルトの名無しさん
2009/04/18(土) 23:11:150763デフォルトの名無しさん
2009/04/18(土) 23:17:15目覚ましだからそういうもん
>>761
ここが目覚ましの部屋だろ
0764デフォルトの名無しさん
2009/04/18(土) 23:42:310765デフォルトの名無しさん
2009/04/18(土) 23:48:360766デフォルトの名無しさん
2009/04/18(土) 23:52:280767デフォルトの名無しさん
2009/04/19(日) 00:22:43他のスレ住民から見れば、ここは頭おかしい人のスレ
だいたい、元祖目覚ましなんてもう来ていないと思われるのに、今でもそいつが来たとか
言って騒いでるのが今の目覚まし達(新目覚まし)だろ。ほんと頭おかしいよな
0768デフォルトの名無しさん
2009/04/19(日) 01:13:440769デフォルトの名無しさん
2009/04/19(日) 02:03:15結局本人がおかしいだけなんだよね。
0770デフォルトの名無しさん
2009/04/19(日) 02:49:440771デフォルトの名無しさん
2009/04/19(日) 06:03:02LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch( msg ){ case WM_DESTROY: PostQuitMessage( 0 ); return 0; }
return DefWindowProc(hWnd, msg, wParam, lParam); }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){
LPWSTR ClassName = L"test";
LPWSTR WindowName = L"ウインドウ";
WNDCLASS WndClass; MSG msg;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH );
WndClass.hCursor = LoadCursor(hInstance, IDC_ARROW );
WndClass.hIcon = NULL;
WndClass.lpszMenuName = NULL;
WndClass.hInstance = hInstance;
WndClass.lpszClassName = ClassName;
WndClass.lpfnWndProc = WndProc;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
HWND hWnd = CreateWindow( ClassName, WindowName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, NULL, NULL, hInstance, NULL );
ShowWindow( hWnd, nShowCmd ); UpdateWindow( hWnd );
while( GetMessage( &msg, hWnd, 0, 0 ) ){
TranslateMessage( &msg );
DispatchMessage( &msg ); } return 0; }
なぜか終了してもプロセスが生きてます
助けてください
0772デフォルトの名無しさん
2009/04/19(日) 06:06:590773デフォルトの名無しさん
2009/04/19(日) 06:43:220774デフォルトの名無しさん
2009/04/19(日) 08:20:42○終了していないからプロセスが生きている
0775デフォルトの名無しさん
2009/04/19(日) 09:02:050776デフォルトの名無しさん
2009/04/19(日) 10:20:400777デフォルトの名無しさん
2009/04/19(日) 10:30:320778デフォルトの名無しさん
2009/04/19(日) 10:40:590779デフォルトの名無しさん
2009/04/19(日) 11:19:030780デフォルトの名無しさん
2009/04/19(日) 12:53:38あと、RegisterClass( &WndClass );
0781デフォルトの名無しさん
2009/04/19(日) 13:02:24空っぽのメッセージループが回ってるだけってオチなのか?
つーか返値とLastErrorのチェックぐらいしろよ
0782780
2009/04/19(日) 13:26:48>>771 int ret; while( ret = GetMessage( &msg, hWnd, 0, 0 )) {
if( ret == -1 ) break;
あと、RegisterClass( &WndClass );
0783デフォルトの名無しさん
2009/04/19(日) 13:33:53それは間違い。
0784デフォルトの名無しさん
2009/04/19(日) 14:09:05GetMessageの第二引数で取得するメッセージをウィンドウに関連付けられたものに限定してるから
WM_QUIT(スレッドメッセージ)が取得できずにループから出れないって事。
0785780
2009/04/19(日) 14:10:40別解答
>>771 int ret; while( ret = GetMessage( &msg, NULL, 0, 0 )) {
if( ret == -1 ) break;
あと、RegisterClass( &WndClass );
0786デフォルトの名無しさん
2009/04/19(日) 14:14:340787デフォルトの名無しさん
2009/04/19(日) 14:33:43GetMessageが-1を返すのは第二引数のハンドルが間違ってる場合だけ
0788デフォルトの名無しさん
2009/04/19(日) 14:59:02別にそれに限定はしていないぞ。
あくまで「例えば」という事で挙げられているだけ。
0789デフォルトの名無しさん
2009/04/19(日) 15:12:11lpMsg で無効なポインタを指定した場合は、エラーが発生します。拡張エラー情報を取得するには、 関数を使います。
警告 GetMessage 関数は、0 以外の値、0、-1 のいずれかを返します。したがって、次のようなコードは避けてください。
while (GetMessage(lpMsg, hWnd, 0, 0)) ...
このようなコードを作成すると、GetMessage 関数が失敗して -1(0xFFFFFFFF、つまり TRUE)が返った場合、
ループが持続し、致命的なアプリケーションエラーを発生させる可能性があります。
0790デフォルトの名無しさん
2009/04/19(日) 15:21:21> If there is an error, the return value is -1.
> For example, the function fails if hWnd is an invalid window handle or lpMsg is an invalid pointer.
> エラーがあると返値は-1
> 例えば、hWndが不正なハンドルだったりlpMsgが不正なポインタだと関数は失敗する
要するに、there is an errorとthe function failsが等価じゃないんだよ
例えばXPだとlpMsgをNULLにするとAccess Violationになる
0791デフォルトの名無しさん
2009/04/19(日) 15:29:27GetMessageの2番目の引数が間違ってたんですね!ありがとうございます
RegisterClassは改行減らすときに消してしまったみたいです
0792デフォルトの名無しさん
2009/04/19(日) 15:34:29とは書かれてないからな。
there is an errorは(プログラマが)関数の使用方法をミスってるという事なんだろう。
野球の「エラー」と同じ意味か。
こういう微妙な英語のニュアンスって難しいなー
そもそも和訳にエラーがあるのが悪いのかw
0793デフォルトの名無しさん
2009/04/19(日) 16:39:120794デフォルトの名無しさん
2009/04/19(日) 16:42:26>>771のソースコードを見てからレスしろ馬鹿
0795デフォルトの名無しさん
2009/04/19(日) 16:44:470796デフォルトの名無しさん
2009/04/19(日) 16:48:160797デフォルトの名無しさん
2009/04/19(日) 16:58:320798デフォルトの名無しさん
2009/04/19(日) 17:11:37GetOpenFileName()を呼び出した時点でダイアログそのものは表示されるのですが
「ダイアログのウィンドウの移動」と「ファイル一覧からファイルを選んでダブルクリックして選ぶ」
以外の動作が一切できません。
(例えば、開くボタン、キャンセルボタン、ウィンドウ右上の閉じるボタン、ディレクトリの新規作成ボタンなど、一切合切)
何かイベントハンドラみたいなコールバック関数を紐付ける必要があるのかなと思ったのですが
ぐぐって調べてみた限りでは、OPENFILENAME構造体さえ渡せば大丈夫にしか感じられなかったので
さっぱりです。。。
コードはこんな感じです。
// メインのダイアログのメッセージハンドラ
INT_PTR CALLBACK MainPanel(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static OPENFILENAME ofn;
static wchar_t path[1024];
(略)
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hDlg;
ofn.lpstrFile = path;
ofn.nMaxFile = 1024;
ofn.lpstrFilter = L"*.*";
ofn.Flags = OFN_PATHMUSTEXIST | OFN_EXPLORER;
ofn.lpstrTitle = L"test";
ofn.lpstrDefExt = L"*";
GetOpenFileName(&ofn);
何か足りないものがあったら指摘お願いいたします。
0799デフォルトの名無しさん
2009/04/19(日) 17:29:310800デフォルトの名無しさん
2009/04/19(日) 19:21:36#include <windows.h>
// メインのダイアログのメッセージハンドラ
int main()
{
static OPENFILENAME ofn;
static TCHAR path[1024];
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL;//hDlg;
ofn.lpstrFile = path;
ofn.nMaxFile = 1024;
ofn.lpstrFilter = TEXT("*.*");
ofn.Flags = OFN_PATHMUSTEXIST | OFN_EXPLORER;
ofn.lpstrTitle = TEXT("test");
ofn.lpstrDefExt = TEXT("*");
GetOpenFileName(&ofn);
}
0801デフォルトの名無しさん
2009/04/19(日) 19:25:510802デフォルトの名無しさん
2009/04/19(日) 19:49:070803デフォルトの名無しさん
2009/04/19(日) 19:54:33新しくWin32コンソールプロジェクトを立ち上げてそのコードをコピペしたらちゃんと動きました。
でもやっぱり当初のプロジェクトだと動かないです。
とりあえず、原因が>798で貼ったところ以外にありそうだという事だけは分かりました・・・
U-NN
0804デフォルトの名無しさん
2009/04/19(日) 19:59:46ここにゴミが入ってたり前回の内容が残ってると思わぬ動作をするが
つい出力専用だと思ってしまいクリアするのを忘れがちである。
つまりstaticにしとけば(少なくとも最初の一回は)安心なんだよ!
あとlpstrFilterとlpstrDefExtも中身ムチャクチャだけど気にすんな
0805デフォルトの名無しさん
2009/04/19(日) 20:15:230806デフォルトの名無しさん
2009/04/19(日) 20:15:59まあ今更元に戻らないとは思うけど。
0807デフォルトの名無しさん
2009/04/19(日) 20:17:550808>798 >803
2009/04/19(日) 20:23:49ひょっとして
> INT_PTR DialogBox(
> HINSTANCE hInstance, // モジュールのハンドル
> LPCTSTR lpTemplate, // ダイアログボックステンプレート
> HWND hWndParent, // オーナーウィンドウのハンドル
> DLGPROC lpDialogFunc // ダイアログボックスプロシージャ
> );
関数を使ってモーダルダイアログを作って、その中で GetOpenFileName() するときちんと動かない?
実際、GetOpenFileName() をモーダルダイアログのハンドラの外に追い出してみたらちゃんと動いた。
モーダルダイアログの中から更にファイル選択ダイアログなんか開いちゃだめという事なのか
0809デフォルトの名無しさん
2009/04/19(日) 20:33:37staticじゃなくてもこれでおk
0810デフォルトの名無しさん
2009/04/19(日) 20:35:49ンな訳ねーだろ
0811デフォルトの名無しさん
2009/04/19(日) 20:39:150812デフォルトの名無しさん
2009/04/19(日) 20:51:14>>809
>>811
駄目でしたorz
CreateDialog()を使ったモードレスダイアログからファイルを開くようにしてみても駄目でした
よっぽど変なことをしてる余寒
0813デフォルトの名無しさん
2009/04/19(日) 21:15:58lpstrFilterは説明文とフィルタのペアでないといけない。例・TEXT("All\0*.*\0")
デフォルトの拡張子がないならlpstrDefExt=NULL
動く動かないは別にしてこの辺おかしい
0814デフォルトの名無しさん
2009/04/19(日) 21:21:02呼出付近だけ晒して訊かれてもググれとしか答えようが無い
0815デフォルトの名無しさん
2009/04/19(日) 21:26:51原因は結局よく分かりませんでしたが、ダイアログのリソースを作り直して
・「Style」プロパティを「ポップアップ」にしてたのを「子」に変更
・CreateDialogでモードレスダイアログとして作成(これはそのまま)
・独立したポップアップウィンドウでアプリを構成するのではなく、
きちんとCreateWindow関数で作った親ウィンドウにリソースを貼り付ける形にする
としてみたらダイアログのハンドラからGetOpenFileName()できました
お騒がせいたしましたm(__)m
0816デフォルトの名無しさん
2009/04/19(日) 21:32:490817デフォルトの名無しさん
2009/04/19(日) 22:24:03ファイルポインタ使ってリードするのってまずいと思う?
メモリ足りてればいいんだけど足りない場合データをテンポラリに作ってるから
アクセス方法に困る
0818デフォルトの名無しさん
2009/04/19(日) 22:29:260819デフォルトの名無しさん
2009/04/19(日) 22:32:530820デフォルトの名無しさん
2009/04/19(日) 22:37:380821デフォルトの名無しさん
2009/04/19(日) 22:42:22明確に言えないから逆に不安になる
でもなんとなく思うのは
そんな細かい1バイト単位で連続アクセスして
速度や効率負荷とかどうなのかとか、そもそもそんな使い方するのが一般的なのかとか
色々思う
メモリマッピングってファイルマッピングのこと?
0822デフォルトの名無しさん
2009/04/19(日) 22:55:290823デフォルトの名無しさん
2009/04/19(日) 23:06:55もちろん知ってますよ
それも含めてどうなのかなと
0824デフォルトの名無しさん
2009/04/19(日) 23:14:51それ以上でもそれ以下でもない。
それでなにか問題があったのか?
0825デフォルトの名無しさん
2009/04/19(日) 23:28:57普通にマッピングか何かでやって深く考えないようにする
0826397
2009/04/19(日) 23:39:44試しに、1ビットずつ画像サイズ分ビットを立てているつもりなのですけれど、上手くいきません。
上手く行くサイズの時と、上手く行かないサイズの時がある感じなのですが、何がおかしいのでしょうか?
少々、長くなって申し訳ないですけれど、教えていただけますと嬉しいです。
x_min , y_min → 画像の左上座標
x_max , y_max → 画像の右下座標
x_size = (x_max - (x_min - 1)) ; // 画像のxサイズ
if ( (x_size % 32) != 0 ) { // 4バイト単位にする
x_size /= 32 ;
x_size *= 32 ;
x_size += 32 ;
}
lp_bitmap = (LPBYTE)HeapAlloc( GetProcessHeap( ) , HEAP_ZERO_MEMORY , (y_max - (y_min - 1)) * x_size ) ; // 配列の確保
save_lp_bitmap = lp_bitmap ;
bit = 0 ; // 何ビット目を扱うのか
for ( i = 0 ; i < (y_max - (y_min - 1)) ; i++ ) { // yサイズ
for ( j = 0 ; j < x_size ; j++ ) { // xサイズ
if ( j < (x_max - (x_min - 1)) )
*lp_bitmap |= (0x01 << (7 - bit)) ; // ビットを立てる
bit++ ;
if ( bit > 7 ) {
bit = 0 ;
lp_bitmap++ ;
}
}
}
hBitmapPiece[count] = CreateBitmap( (int)(x_max - (x_min - 1)) , (int)(y_max - (y_min - 1)) , 1 , 1 , save_lp_bitmap ) ; // ビットマップの作成
0827デフォルトの名無しさん
2009/04/19(日) 23:45:32bit = 0 ; // 何ビット目を扱うのか
for ( j = 0 ; j < x_size ; j++ ) { // xサイズ
0828デフォルトの名無しさん
2009/04/19(日) 23:50:214バイトアラインで詰め物しないといけなかった気がするのだがやってる?
0829828
2009/04/19(日) 23:51:260830397
2009/04/19(日) 23:53:18忘れてました、ありがとうございます。
ですが、これだけではまだ全部は上手くいかないようです。
>>828
いえ、Bitmapは初めて扱うのであまり分かりません。
詰め物とは何でしょうか?
申し訳ないですが、教えていただけますとありがたいです。
0831デフォルトの名無しさん
2009/04/19(日) 23:53:37訂正するのってすげー恥ずかしいよな
0832デフォルトの名無しさん
2009/04/19(日) 23:55:39lp_bitmap = save_lp_bitmap + i * x_size;
これがいるんじゃね?
あとメモリ確保しすぎじゃね?
0833デフォルトの名無しさん
2009/04/19(日) 23:59:18こうかも?
x_size が画像のサイズなのか1ラインのメモリのサイズなのか
ごっちゃになってる気がする
0834デフォルトの名無しさん
2009/04/20(月) 00:00:26素直に謝るのはえらいけどね
0835397
2009/04/20(月) 00:00:46入れてみたら間がスカスカの画像になってしまいました。
メモリは /8 した方が良さそうですか?
>>833
画像の上半分は表示されますが、下半分が表示されなくなりました。
変数名が分かりづらくて申し訳ない。
0836デフォルトの名無しさん
2009/04/20(月) 00:02:33詰め物とは、ビットマップはいろんな制約から、幅の末尾をバイト単位で4バイト区切りのデータにしないといけない。
物理的に足りない部分は意味のないデータを詰めて見た目を4バイト区切りにするがその詰め物には何を書き込んでも表に出てこない。
良く見たらやってるみたいだから問題ないと思う。
っていうか俺涙目。
0837デフォルトの名無しさん
2009/04/20(月) 00:04:54これでどうだ!!!1
0838397
2009/04/20(月) 00:08:16問題ない感じですね。
ご説明ありがとうございました。
>>837
一部のサイズの時に、イメージ的にこんな感じなってしまいます。
それが直りません。
それ以外は問題なさそうなのですが。
■■■■■■■■■■■■■■■■■■■■
□□□□□□■■■■■■■■■■■■■■
■■■■□□□□□□■■■■■■■■■■
■■■■■■■■□□□□□□■■■■■■
■■■■■■■■■■■■□□□□□□■■
0839837
2009/04/20(月) 00:24:05ここで1ライン分全部やってるからよく考えたら>>837は必要なかった
余計なこと言ってごめんなさい
0840397
2009/04/20(月) 00:29:06ありがとうございます。
後は>>838で書いたような変なラインが、たまに入る時があるだけのようです。
ビットマップって難しいですね。
どこかで1回多めに回してしまってるのでしょうか?
0841デフォルトの名無しさん
2009/04/20(月) 00:29:22縦は良いけど横幅は1ビット1ピクセルだからバイトに直すときは8で割らないといけない気がする。
0842397
2009/04/20(月) 00:31:56ありがとうございます。
確かにそうですね、直させて頂きました。
0843デフォルトの名無しさん
2009/04/20(月) 00:47:25DWORD dwWidthBytes = WIDTHBYTES(bi.biWidth * bi.biBitCount);
普通こういうのを定義して使うだろ・・・
0844397
2009/04/20(月) 00:52:48この引数も4バイト単位じゃないといけないみたい( ? )ですね。
ずっと悩んでいましたので、助けていただきましてありがとうございました。
>>843
マクロを定義した方がよかったのですね。
ビットマップに必死で気づきませんでした、勉強してきます。
0845デフォルトの名無しさん
2009/04/20(月) 00:56:07そんな制限無いって
DIB弄りたいならMSDNにあるShowDIBとSeeDIBのサンプル見とけよ
0846デフォルトの名無しさん
2009/04/20(月) 00:56:100847397
2009/04/20(月) 01:00:34分かりました、見てきます。
ありがとうございました。
0848デフォルトの名無しさん
2009/04/20(月) 01:00:35DWORDアラインはCreateDIBSectionで作ったDIBだろ。
0849デフォルトの名無しさん
2009/04/20(月) 01:06:54エロ禁止!
0850デフォルトの名無しさん
2009/04/20(月) 01:13:36Ω<な!なんだって〜。
0851デフォルトの名無しさん
2009/04/20(月) 02:38:43動作は保障しない。
HBITMAP CreateMonoBitamp(unsigned int Width,unsigned int Height){
int Align =2;
int Pod = (Width% (Align*8))== 0 ? 0:Align-((Width% (Align*8))/8);//ワードアライン
int f=0;
HBITMAP hbm=NULL;
LPBYTE Mbmp = (LPBYTE)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY ,Height*((Width/8)+Pod)) ;// 配列の確保
for(int i=0;i<Height;i++){
for(int j=0;j<Width;j++){
Mbmp[(((Width/8)+Pod)*i)+(j/8)] |= f<<(7-(j%8));//ビット操作はここ。
f= f? 0:1;
}
}
hbm = CreateBitmap(Width,Height,1,1,Mbmp);
//DWORD ret = GetLastError();
HeapFree(GetProcessHeap( ),0,Mbmp);
return hbm;//使い終わったらデリートしましょう。
}
0852デフォルトの名無しさん
2009/04/20(月) 04:36:32http://wisdom.sakura.ne.jp/system/winapi/win32/win84.html
ここのソースそのままコピペして
DialogBox関数の2番目の引数を自分で作ったやつ(IDD_DIALOG1)に直して
あとはresource.hをインクルードしただけです
Dialogbox関数の戻り値は-1でした
助けて下さい
0853デフォルトの名無しさん
2009/04/20(月) 05:03:02恥ずかしげもなく、よくこんな間抜けなコードを晒せるなあと感心するよ
0854デフォルトの名無しさん
2009/04/20(月) 05:49:50画像処理ってこういう単純なルーチンでもそいつのスキルが明確に現れるよな
0855デフォルトの名無しさん
2009/04/20(月) 08:05:32そもそもDDBである必要性もあるかどうか。
0856デフォルトの名無しさん
2009/04/20(月) 08:43:36朝飯食べてて、思ったんだけど、WEBページからコピーしてそのままのは動く?
あと、4つくらい有るけど、そのWEBページのどのソース?
0857デフォルトの名無しさん
2009/04/20(月) 08:54:41resource.hの中もIDD_DIALOG1になおした?
リソースをインクルードした?
0858デフォルトの名無しさん
2009/04/20(月) 09:01:490859デフォルトの名無しさん
2009/04/20(月) 10:21:58http://kissho.xii.jp/1/src/1jyou72627.zip.html
ソース丸投げです 許して下さい
いろいろ弄ってみたんですが、どうしてもダイアログが表示されません
お願いします
0860デフォルトの名無しさん
2009/04/20(月) 10:32:35L"IDD_DIALOG1"
を
MAKEINTRESOURCE(IDD_DIALOG1)
に
なおすのはこれだけじゃ無いけど、まずはこれ
0861デフォルトの名無しさん
2009/04/20(月) 10:37:230862デフォルトの名無しさん
2009/04/20(月) 10:40:49出た!!!ありがとうございます!!!
0863デフォルトの名無しさん
2009/04/20(月) 12:58:01その関数書くのに1時間くらいかかったわけだが。
あんたらのえくすとりーむなコードさらしてくれよ。馬鹿にしたんだからできるだしょ?
あと、バグってるならバグってるって言ってくれれば後学のためになるんだが。。。
0864デフォルトの名無しさん
2009/04/20(月) 13:28:09オレだったら、こんな感じに書くかなぁ・・・
#define ALIGN_WIDTH(x,a) ((x + (a-1)) & ~(a-1))
unsigned int AlignWidth = ALIGN_WIDTH(Width,16);
unsigned int MemorySize = Height * AlignWidth / 8;
0867デフォルトの名無しさん
2009/04/20(月) 14:22:040868デフォルトの名無しさん
2009/04/20(月) 14:32:070869デフォルトの名無しさん
2009/04/20(月) 15:26:44そんな人がコードが汚くなりがちとか言う資格ないよ。
それと内側のループの
Mbmp[(((Width/8)+Pod)*i)+(j/8)] |= f<<(7-(j%8));//ビット操作はここ。
毎回乗除算なんて無駄が多すぎる
もっとCPUに優しいコード書けるようになろうな。
0870デフォルトの名無しさん
2009/04/20(月) 15:40:210871デフォルトの名無しさん
2009/04/20(月) 15:49:14高速化よりも書きやすさを優先してる。1スレに収めるつもりだったし。俺がやってもあんま高速にならんし。。。
まぁ、確かに描画フレーム単位で呼ぶには重いかもしれんね。
じゃあ、えくすとりーむこーどをよろしく。
0872デフォルトの名無しさん
2009/04/20(月) 15:50:38最適化すげー。
0873デフォルトの名無しさん
2009/04/20(月) 15:52:03下手なコードしか書けない癖になんでコイツ偉そうなの?
0874デフォルトの名無しさん
2009/04/20(月) 15:54:230875デフォルトの名無しさん
2009/04/20(月) 15:56:450876デフォルトの名無しさん
2009/04/20(月) 16:02:470877デフォルトの名無しさん
2009/04/20(月) 16:04:590878デフォルトの名無しさん
2009/04/20(月) 16:06:12>>700くらいの流れに比べれば本物の糞よりハナクソレベルにはマシ
0879デフォルトの名無しさん
2009/04/20(月) 16:09:050880デフォルトの名無しさん
2009/04/20(月) 16:11:15これをチューンしてもあんまり旨みがないと思う。
でも住人にはもっと上があるって注文だからな。ため息でるよ。
見てみたい、発想の違う斜め上。
0881851
2009/04/20(月) 16:14:06引っ込むぜ。
そんじゃね!ノシ
0882デフォルトの名無しさん
2009/04/20(月) 16:18:42頭おかしいんじゃねえの?
0883デフォルトの名無しさん
2009/04/20(月) 16:19:360884デフォルトの名無しさん
2009/04/20(月) 16:26:550885デフォルトの名無しさん
2009/04/20(月) 16:40:17富豪的プログラミングしか出来ない人はC++使わなくていいよ。
0886デフォルトの名無しさん
2009/04/20(月) 16:40:450887デフォルトの名無しさん
2009/04/20(月) 16:45:040888デフォルトの名無しさん
2009/04/20(月) 17:01:06酷い
0889デフォルトの名無しさん
2009/04/20(月) 17:02:57出せないのじゃ出来ないのと同じだと先生が言ってた
0890デフォルトの名無しさん
2009/04/20(月) 17:05:21そんな負け惜しみはいいから。
0891889
2009/04/20(月) 17:13:26俺は>>851じゃないよ。
コードにはコードでしてしたほうが良いんじゃない
それすら出来ない口先がプロのプログラマじゃ恥ずかしくない
と学生の俺でも思う
0892デフォルトの名無しさん
2009/04/20(月) 17:15:38俺もっと酷いぞ。
0893デフォルトの名無しさん
2009/04/20(月) 17:15:41コードさらすやつがいなくなるだろう
0894デフォルトの名無しさん
2009/04/20(月) 17:20:300895889
2009/04/20(月) 17:59:02学校でC言語習ったが俺なんてコードすらあまりかけないよ。コードの前に
どのようなソフトの全体ストラクチャ・関数内のストラクチャにしたほうが良いのかすら分らん。
>>894
もう、コードを晒す事が求められてるから晒していいよ
0896デフォルトの名無しさん
2009/04/20(月) 18:08:050897デフォルトの名無しさん
2009/04/20(月) 18:15:170898デフォルトの名無しさん
2009/04/20(月) 18:22:41ネタだよね?マジならこんな場所で何してんの?世の中ナメてんの?10年ぐらいROMっとく?
0899デフォルトの名無しさん
2009/04/20(月) 18:22:46for (int i=0; i<8; i++) {
i[data] = (WORD)(0x5555 << (i & 1));
}
return CreateBitmap(8, 8, 1, 1, &data);
0900デフォルトの名無しさん
2009/04/20(月) 18:23:45コード書けない奴がなんでこのスレにいるんだよ
0901デフォルトの名無しさん
2009/04/20(月) 18:39:04MSはC++のコンパイラが一番最適化が賢いと言ってるので
糞コードしか書けない人はむしろC++の方がいいかもしれん。
0902デフォルトの名無しさん
2009/04/20(月) 18:45:07; i[data] = (WORD)(0x5555 << (i & 1));
mov eax, 43690 ; 0000aaaaH
mov WORD PTR _data$[esp+18], ax
mov WORD PTR _data$[esp+22], ax
mov WORD PTR _data$[esp+26], ax
mov WORD PTR _data$[esp+30], ax
...
mov ecx, 21845 ; 00005555H
mov WORD PTR _data$[esp+36], cx
mov WORD PTR _data$[esp+40], cx
mov WORD PTR _data$[esp+44], cx
mov WORD PTR _data$[esp+48], cx
うわーヘタレなコード生成だなぁ(vc2005)。2008だとマシなのかなぁ。
0903889
2009/04/20(月) 18:46:07日本語読めるの? 全く書けないとは言ってないんだけど
貴方の書けないとは言うのは、どんなレベルなの?
糞コードじゃないコードを書けることなんでしょ
じゃ、かける貴方が糞コードと言われている>>851を糞じゃないレベルに修正したの見せて
書ける貴方のコードなら、他の人から糞コードなんて言われないよね
0904デフォルトの名無しさん
2009/04/20(月) 19:09:03こういうのが考えつかないなら全く書けないのと一緒
0905デフォルトの名無しさん
2009/04/20(月) 19:20:08学校で習った程度のレベルで「書ける」とは言わないんだよ。
連中は日付計算の問題で
if(month==1)return 31;
else if(month==2&&isleap(year))return 29;
else if(month==2&&!isleap(year))return 28;
else if(month==3)return 31;
...
みたいなコードを平気で書いて提出するからなw
0906デフォルトの名無しさん
2009/04/20(月) 19:52:59プロはマ板にでも行ってろカス
0907デフォルトの名無しさん
2009/04/20(月) 19:55:30ほどほどにしておけよ。
0908デフォルトの名無しさん
2009/04/20(月) 19:59:540909デフォルトの名無しさん
2009/04/20(月) 20:01:240910デフォルトの名無しさん
2009/04/20(月) 20:03:06煽ってんじゃねえクソ死ね
0911デフォルトの名無しさん
2009/04/20(月) 20:04:110912デフォルトの名無しさん
2009/04/20(月) 20:04:470913デフォルトの名無しさん
2009/04/20(月) 20:04:500914デフォルトの名無しさん
2009/04/20(月) 20:04:530915デフォルトの名無しさん
2009/04/20(月) 20:04:570916デフォルトの名無しさん
2009/04/20(月) 20:05:000917デフォルトの名無しさん
2009/04/20(月) 20:05:040918デフォルトの名無しさん
2009/04/20(月) 20:05:080919デフォルトの名無しさん
2009/04/20(月) 20:05:110920デフォルトの名無しさん
2009/04/20(月) 20:08:230921デフォルトの名無しさん
2009/04/20(月) 20:11:29煽ってんじゃない。馬鹿にしてんだよw
0922デフォルトの名無しさん
2009/04/20(月) 20:13:28●持ちのようだし
0923デフォルトの名無しさん
2009/04/20(月) 20:14:54挑発に乗って熱くなってんじゃねえ。
いつものことだろうが。
0924デフォルトの名無しさん
2009/04/20(月) 20:15:19何をためらってるのか
0925デフォルトの名無しさん
2009/04/20(月) 20:16:15(´・ω・)ノ>゚+。:.゚
C□ / ゚。:.゚.:。+゚
/ . |
(ノ ̄∪
0926デフォルトの名無しさん
2009/04/20(月) 20:16:450927デフォルトの名無しさん
2009/04/20(月) 20:17:080928デフォルトの名無しさん
2009/04/20(月) 20:20:23慣れたな
0929デフォルトの名無しさん
2009/04/20(月) 20:22:340930デフォルトの名無しさん
2009/04/20(月) 20:24:360931デフォルトの名無しさん
2009/04/20(月) 20:28:310932デフォルトの名無しさん
2009/04/20(月) 20:33:240933デフォルトの名無しさん
2009/04/20(月) 20:34:03世の中って恐ろしいな
0934デフォルトの名無しさん
2009/04/20(月) 20:38:390935デフォルトの名無しさん
2009/04/20(月) 20:40:340936デフォルトの名無しさん
2009/04/20(月) 20:42:030937デフォルトの名無しさん
2009/04/20(月) 20:46:040938デフォルトの名無しさん
2009/04/20(月) 22:02:06平日はこうじゃないとこのスレらしくないよな
と言うことで、目覚まし警報,age
0939デフォルトの名無しさん
2009/04/20(月) 22:23:32なんで>>906=>>889になるんだ
頭大丈夫か? お前目覚ましだからしょうがないよな。
寝ているから、>>910 が読めないのか
0940デフォルトの名無しさん
2009/04/20(月) 23:39:45どんだけ天才揃いなんだよ。
凄いスレに来てしまったぜw
0941デフォルトの名無しさん
2009/04/20(月) 23:43:00お前しつこいよ
0942デフォルトの名無しさん
2009/04/20(月) 23:49:43猫でもレベルで書ける部類に入るとマジで思ってるのか?
0943デフォルトの名無しさん
2009/04/20(月) 23:54:200944デフォルトの名無しさん
2009/04/21(火) 00:06:130945デフォルトの名無しさん
2009/04/21(火) 00:10:39↓からスタート
0946↑終了
2009/04/21(火) 00:11:330947開始↓
2009/04/21(火) 00:38:160948デフォルトの名無しさん
2009/04/21(火) 00:45:160949デフォルトの名無しさん
2009/04/21(火) 01:09:560950デフォルトの名無しさん
2009/04/21(火) 02:18:370951デフォルトの名無しさん
2009/04/21(火) 02:31:470952デフォルトの名無しさん
2009/04/21(火) 02:49:200954856
2009/04/21(火) 04:13:430955856
2009/04/21(火) 04:30:080956856
2009/04/21(火) 11:41:17>>852>>859
DlgProcで処理しないときは0を返して
なおすのはこれだけじゃ無いけど、まずはこれ
あとは resource.h の IDD_DIALOG1 をコメントに…なんたらかんたら
0957856
2009/04/21(火) 12:02:470958デフォルトの名無しさん
2009/04/21(火) 16:07:06しまいますが、これをFtpGetFileみたく上書き禁止にする方法はありますでしょうか?
実現したい事としては、複数クライアントからとあるアップした場合にそれぞれ違う
ファイル名を割り振りたいのです。FTPからあらかじめ
「ファイルリストを取得→かぶらないファイル名でアップロード」
とやってもタイミングによっては上書きしてしまいますよね。
なにかうまい方法があればご教授お願いいたします。
0959デフォルトの名無しさん
2009/04/21(火) 18:24:190960デフォルトの名無しさん
2009/04/21(火) 18:39:34取得するには何について勉強すればよいでしょうか?
0961デフォルトの名無しさん
2009/04/21(火) 20:10:160962デフォルトの名無しさん
2009/04/21(火) 22:21:07出来れば複数貼り付けられたらなと思っています。
0963デフォルトの名無しさん
2009/04/21(火) 22:31:04少しは頭を働かそうな。
0964デフォルトの名無しさん
2009/04/21(火) 23:18:23ありがとう
0965デフォルトの名無しさん
2009/04/21(火) 23:24:55ありがとうございました。なんとかがんばります。
0966デフォルトの名無しさん
2009/04/22(水) 19:19:06winlogonデスクトップのハンドルを取得し、SetThreadDesktop実行後に
sendInput関数を実行しているのですが、戻り値は正常でも実際には何も入力されていないようなのです。
パスワード入力のキャレットは点滅しているので、フォーカスはあっていると思います。
0967デフォルトの名無しさん
2009/04/22(水) 19:28:450968デフォルトの名無しさん
2009/04/22(水) 20:07:490969デフォルトの名無しさん
2009/04/22(水) 21:10:340970デフォルトの名無しさん
2009/04/22(水) 22:09:180971デフォルトの名無しさん
2009/04/22(水) 22:46:420972デフォルトの名無しさん
2009/04/22(水) 22:51:140973デフォルトの名無しさん
2009/04/22(水) 23:09:220974↑荒らすクズ↓
2009/04/22(水) 23:12:050975デフォルトの名無しさん
2009/04/22(水) 23:17:370976デフォルトの名無しさん
2009/04/22(水) 23:27:28俺は分からんが
>>966 は Yes or Noを求めているだけで手段を聞いているわけじゃないだろ
ただ、したい事が基地丸出しなだけ。
0977デフォルトの名無しさん
2009/04/22(水) 23:29:460978デフォルトの名無しさん
2009/04/22(水) 23:31:57訳:俺は>>966だが
0979デフォルトの名無しさん
2009/04/22(水) 23:33:510980デフォルトの名無しさん
2009/04/22(水) 23:36:32さっさと立てろ
0981デフォルトの名無しさん
2009/04/22(水) 23:39:31保証はない
0982デフォルトの名無しさん
2009/04/22(水) 23:39:430983デフォルトの名無しさん
2009/04/22(水) 23:39:540984デフォルトの名無しさん
2009/04/22(水) 23:42:44http://pc12.2ch.net/test/read.cgi/tech/1240411224/
0985デフォルトの名無しさん
2009/04/22(水) 23:52:17お前は使える犬だ!
0986984
2009/04/22(水) 23:56:140987デフォルトの名無しさん
2009/04/23(木) 00:05:330988デフォルトの名無しさん
2009/04/23(木) 00:14:42左にシフトしていくようにしたいんだけどいい方法ないですか?
できるだけ、滑らかに流れるように線を引きたいんですが、メモリデバイスコンテキスト
を2用意して、ずらしてコピーして描画みたいな方法しか思いつきません
0989デフォルトの名無しさん
2009/04/23(木) 00:19:340990デフォルトの名無しさん
2009/04/23(木) 00:47:00グラフの数値が手元にあるなら、キューイングしていって、更新のたびに書き直す。
0991デフォルトの名無しさん
2009/04/23(木) 00:48:15Direct3Dとか見てたら馬鹿らしくなるぜ。
0992デフォルトの名無しさん
2009/04/23(木) 01:10:19数値を保持しておいてまた全て描画し直してていった方が効率いいんですね
その方法でいってみようと思います
0993デフォルトの名無しさん
2009/04/23(木) 01:10:20数値を保持しておいてまた全て描画し直してていった方が効率いいんですね
その方法でいってみようと思います
0994デフォルトの名無しさん
2009/04/23(木) 01:12:520995デフォルトの名無しさん
2009/04/23(木) 01:17:460996デフォルトの名無しさん
2009/04/23(木) 01:25:390997デフォルトの名無しさん
2009/04/23(木) 07:19:16ttp://msdn.microsoft.com/ja-jp/library/cc411017.aspx
0998デフォルトの名無しさん
2009/04/23(木) 09:18:55今のPCの性能ならそれくらいやっても問題になりにくいだけだ。いい時代だよ、まったく。
0999デフォルトの名無しさん
2009/04/23(木) 09:21:261000デフォルトの名無しさん
2009/04/23(木) 09:22:2910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。