■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build49
1 名前:デフォルトの名無しさん :2007/01/14(日) 02:20:01
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

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


2 名前:デフォルトの名無しさん :2007/01/14(日) 02:21:37
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/

3 名前:デフォルトの名無しさん :2007/01/14(日) 02:22:44
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/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 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

4 名前:デフォルトの名無しさん :2007/01/14(日) 02:24:32
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
http://msdn2.microsoft.com/ja-jp/library/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Google
http://www.google.com/
- MSDN ライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
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

- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://www.2chsearch.info/index.php?b=tech
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech


5 名前:デフォルトの名無しさん :2007/01/14(日) 02:25:23
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
http://msdn.microsoft.com/library/
http://msdn2.microsoft.com/en-us/library/

おまけ;Windows SDK for Windows Vista RC1の文書。
http://windowssdk.msdn.microsoft.com/en-us/library/

MSDN ライブラリ 2006年8月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=6671F8DA-B0CB-41DE-AD93-798FC71D344D&displaylang=ja


windowssdk.msdn.microsoft.comは、もうmsdn2へ転送されるようになっている。


6 名前:デフォルトの名無しさん :2007/01/14(日) 02:44:45
          ヽ / /⌒\
         /ヽヽ|/⌒\ii|\
       / /ヾゞ///\\|
       |/   |;;;;;;|/ハ \|
             |;;;;//⌒ヽ
             |;/( ^ω^) >>1おっおっおっ乙枯ー
.           |{ ∪  ∪
             |;;ヾ.,____,ノ
             |;;; |
             |;;;;;|
             |;;;;;|

7 名前:デフォルトの名無しさん :2007/01/14(日) 06:18:38


8 名前:デフォルトの名無しさん :2007/01/14(日) 10:09:01
msdn2はなんであんなに重たいの?

9 名前:デフォルトの名無しさん :2007/01/14(日) 10:36:47
みんな使ってるからじゃない

10 名前:デフォルトの名無しさん :2007/01/14(日) 15:38:34
えーっ!!
俺のmsdn2ローカルにあるんだが

11 名前:デフォルトの名無しさん :2007/01/14(日) 15:48:40
msの鯖缶きたこれ

12 名前:デフォルトの名無しさん :2007/01/14(日) 16:08:12
970です。
すいません、環境を書くの忘れてました。VC6.0でMFCは使ってません。
Win32APIのみで作成しています。あと、質問内容の書き方も悪かったので、
下に改めて書き直します。

1.自作プログラムからIE1を起動(CreateProcessでHTMLファイルを
  IE1の引数として起動させてます。自作プログラムとIE1は別プロセス)
2.IE1に読み込まれたHTMLファイル内のjavascriptのwindow.openで
  新たにIEのウィンドウ(IE2)を開く(IE1とIE2は同一プロセス)

この状態で、自作プログラムからIE2の状態を監視して,IE2がアイドル状態に
なるまで,自作プログラムの処理を待機させたいのです。

>>971氏の方法はIE1内でwindow.openではなくてCreateObjectを使うってことでしょうか?

長文で申し訳ないですが、よろしくおねがいします。

13 名前:デフォルトの名無しさん :2007/01/14(日) 17:27:22
>>12
IE1とIE2って同居できたっけ?
つか、今時、Win95使ってんのか?
もう11年も前のOSだぞ。

14 名前:デフォルトの名無しさん :2007/01/14(日) 17:46:38
だがそれもいい

15 名前:前スレ970 :2007/01/14(日) 20:28:07
>>13
いや,便宜上区別するためにIE1とIE2と書いているのです。IEのバージョンは6です。

IEの詳細設定から別プロセスで起動するって項目が無くなって、新しいウィンドウが
元のウィンドウから生成されるとき、スレッドを生成して立ち上がるようになりましたよね?
その新しいウィンドウの状態をどうやって取得すればよいのか分からなくて、質問させて
いただきました。

16 名前:デフォルトの名無しさん :2007/01/14(日) 20:35:57
その開くページは自前のページ?
自前のページならそのHTMLの unload イベント(だったっけ?
最近、弄ってないから正確に覚えてない)で小細工すればどうにかなると
思うけど、そうじゃないならちょっと難しいかもね。
外部からスレッドを監視するにしても新しく作成されたスレッドが
自分が監視するべきスレッドであるかどうかなんて区別のしようがないし。

17 名前:デフォルトの名無しさん :2007/01/14(日) 23:37:53
Acrobatのページサムネール表示、あるいはPowerPointのスライド一覧表示のように、
イメージのリストを表示し、かつ、その順番をマウスのドラッグで調整したいと思ってます。
ドラッグ中、イメージが挿入される場所にカーソルの様な縦線が出てきて欲しいなと思ってます。

詳しいお兄様方、既存の実装例やコントロールのコードのサンプルなど御存知でしたら御教示下され
スレ違いならごめんなさい。

18 名前:デフォルトの名無しさん :2007/01/14(日) 23:42:39
Windows
VC++2005です。

Mezegisのような、加速器を作りたいと考えています。
一応、資料等を探してはみたのですが、全くありませんでした。
どなたか資料等や、必要なAPIや、サンプルコード等を教えて頂けませんでしょうか。
よろしくお願いいたします

Mezegisというのはttp://hp.vector.co.jp/authors/VA017297/のRagud Mezegisです。

http://pc10.2ch.net/test/read.cgi/tech/1153542424/l50
こちらのスレで誘導されて来ました。

19 名前:デフォルトの名無しさん :2007/01/15(月) 00:18:12
ttp://hp.vector.co.jp/authors/VA028184/qands.html#D29
こういうことではない?

20 名前:デフォルトの名無しさん :2007/01/15(月) 01:11:33
若いの オラが村では派遣の問題を口にしちゃなんねーだ
お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな糞田舎で悲惨な生活するためにはよぉ
北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ


21 名前:デフォルトの名無しさん :2007/01/15(月) 02:28:05
>>18
そのソフトは知らんが、簡単に言うとタイマー系APIを自前の処理に
置き換えるのが基本。
APIを置き換える手段はAPIフックとか、ラッパーDLL等。
ターゲットが決まっているならラッパーDLLが楽かな。

とりあえず、そういうことがしたいならAdvanced Windowsを買うように。

22 名前:デフォルトの名無しさん :2007/01/15(月) 02:37:42
ラッパーAPIってのは一歩間違えるとこういう結果になるぞ
http://pc10.2ch.net/test/read.cgi/prog/1164508336/

23 名前:デフォルトの名無しさん :2007/01/15(月) 02:56:31
YO!YO!ですYO!、YO!YO!ですYO!

24 名前:デフォルトの名無しさん :2007/01/15(月) 03:12:14
22はラッパーDLLの意味がわかってなさそう。
http://www.microsoft.com/japan/Terminology/query.aspx?id=2029&q=%u30E9%u30C3%u30D1%u30FC%20DLL&kbid=&key=&ui=L&dev=&site=

25 名前:デフォルトの名無しさん :2007/01/15(月) 03:19:20
自分では素晴らしい新APIを作ったつもりが実際はただのラッパという馬鹿はよくいる

26 名前:デフォルトの名無しさん :2007/01/15(月) 03:56:54
つまり>>25みたいな奴ってことか

27 名前:デフォルトの名無しさん :2007/01/15(月) 08:30:34
こんなことしたいんでけど、実現できる
win32_api知ってたらおしえてくらはい(m_m)
(1) ActiveDirectoryドメインへ参加しているPCに対して
  あるローカルユーザAでログオンする。
(2) ローカルユーザAがログオンしたデスクトップ上で、
  あるドメイン用ユーザのドメインログオン
  を模倣する処理を走らせて、ドメイン用ユーザに
  対してキャッシュログオンが可能な状態にする。
=>要はドメインユーザに対して、
=>最初からキャッシュログオンが可能な状態にしたいってことです。




28 名前:デフォルトの名無しさん :2007/01/15(月) 10:43:50
http://msdn2.microsoft.com/en-us/library/aa375742.aspx

29 名前:デフォルトの名無しさん :2007/01/15(月) 13:51:36
それどこのキーロガー?

30 名前:デフォルトの名無しさん :2007/01/15(月) 17:41:12
PPM画像を読み込んで表示するのとRGBデータそれぞれの配列を用意して格納する方法を教えてください。

31 名前:デフォルトの名無しさん :2007/01/15(月) 17:52:54
Win2K以降のAPIでも構わないのですが、
プロセスIDのみが判ってる状態からそのプロセスのフルパスを得るにはどうすればいいんでしょうか?
OpenProcessしてもそっからなに使っていいかわかりません

本来の目的は指定されたパスの実行ファイルが起動中であるか否かを調べたいだけなので、
そういう状況では失敗するAPIを使って判別できればそれはそれでOKですが

32 名前:デフォルトの名無しさん :2007/01/15(月) 18:09:01
PPM形式は以下の順にデータを並べるだけです.

1.文字列"P3".PPM形式を表すための「マジックナンバー」です.
2.区切り文字.スペースまたはタブまたは改行です.
3.画像の幅.10進数のテキストで出力します.
4.区切り文字
5.画像の高さ.10進数のテキスト.
6.区切り文字
7.R,G,B値の最大値.10進数のテキスト.
8.区切り文字
9.画像データ.R,G,Bの順に10進数のテキストで並べます.もちろん値と値の 間には区切り文字が必要.
また,1行が70文字を越えてはいけません.
なお,"#"で始まる行はコメントとして扱われます.

PPMにはバイナリ形式もあります.

マジックナンバーを"P3"の代わりに"P6"にします.
画像データは10進数のテキストの代わりにバイナリデータ(8bit)を 並べます.
もちろん区切り文字は必要ありません.
バイナリデータは8bitなので,R,G,Bの値の最大値は255までしかとれません
(テキスト形式だとこの制約はありません).


33 名前:デフォルトの名無しさん :2007/01/15(月) 18:14:30
http://support.microsoft.com/kb/175030/ja

34 名前:デフォルトの名無しさん :2007/01/15(月) 18:18:23
http://www.geekpage.jp/programming/psapi/

35 名前:デフォルトの名無しさん :2007/01/15(月) 18:27:39
>>31
CreateToolhelp32Snapshotでモジュールの一覧取れるよ。
プロセスIDから知りたいなら、OpenProcess→EnumProcessModules→GetModuleFileNameEx

36 名前:デフォルトの名無しさん :2007/01/15(月) 18:28:24
指定したファイルが開かれている(編集中)かどうかを調べるにはどんな方法がありますか?
開発環境はVB6.0で、WIN XPか2000で動作すればよいです。よろしくお願いします。

37 名前:デフォルトの名無しさん :2007/01/15(月) 18:40:20
>>33-35
ありがとうございます
CreateToolhelp32Snapshotでプロセス列挙してたので>>31でPIDは判る(非フルパスも判る)、
という状態たったのでEnumProcessModules→GetModuleFileNameExでいけそうです

GetProcessFileNameとはいかないまでも意外と直接的な方法がないんですね

38 名前:デフォルトの名無しさん :2007/01/15(月) 19:16:30
>>36
排他オープンしてみるとか

39 名前:デフォルトの名無しさん :2007/01/15(月) 20:33:20
SendInputというAPIを使うため、INPUT構造体を定義したいのですが
コンパイルで定義されていない識別子ですとなります。

APIを試すためコンソールで組んでいます。

#include <windows.h>
#include <winuser.h>
#include <stdio.h>

int main(void){
int x,y;
char pos[128];
INPUT input = {INPUT_MOUSE, 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, 0};

gets(pos);
x = atoi(pos);
gets(pos);
y = atoi(pos);
SetCursorPos(x, y);
printf("x = %d, y = %d", x, y);
getch();
}
SendInputはInputの定義がうまくいかないのでまだ書いていません。
MSDNを見る限りではwinuser.hをインクルードするだけでいいと思うのですが。
間違っている箇所があれば教えていただけますか?

40 名前:デフォルトの名無しさん :2007/01/15(月) 20:47:20
他のプロセスのボタンを押すにはどうすればいい?

41 名前:デフォルトの名無しさん :2007/01/15(月) 20:48:10
BM_CLICK

42 名前:デフォルトの名無しさん :2007/01/15(月) 20:52:26
>>39
#define _WIN32_WINNT 0x0500


43 名前:デフォルトの名無しさん :2007/01/15(月) 20:53:48
>>39
#if (_WIN32_WINNT > 0x0400)
になってるけど、まさかこれが原因じゃないよな
とりあえず winuser.h に INPUT があるか確かめてみれば
ちなみに windows.h をインクルードすれば winuser.h はいらない

44 名前:デフォルトの名無しさん :2007/01/15(月) 20:54:37
>>41
thx

45 名前:デフォルトの名無しさん :2007/01/15(月) 20:56:16
>>41
sex

46 名前:39 :2007/01/15(月) 22:08:18
できました。ありがとうございました。

47 名前:デフォルトの名無しさん :2007/01/15(月) 22:13:27
>>45-46
つい続けて読んだらフイタ

48 名前:デフォルトの名無しさん :2007/01/15(月) 22:27:43
>>47
お前のせいでオレまでフイタ

49 名前:デフォルトの名無しさん :2007/01/15(月) 22:28:37
>>48
お前のせいで(ry

50 名前:デフォルトの名無しさん :2007/01/16(火) 00:04:00
>>49
お前n(ry

51 名前:デフォルトの名無しさん :2007/01/16(火) 00:09:16
>>50
おm(ry

52 名前:17 :2007/01/16(火) 04:32:44
以下の方が適切かなと思いましたので移動致します。。。
http://pc10.2ch.net/test/read.cgi/tech/1164073111/

53 名前:デフォルトの名無しさん :2007/01/16(火) 19:38:07
>>52
空気嫁

54 名前:デフォルトの名無しさん :2007/01/16(火) 22:24:34
>>53
だが断る。

55 名前:デフォルトの名無しさん :2007/01/16(火) 22:26:59
プログラムの本体があるディレクトリを取得するにはどうすれば?
GetCommandLine関数から摘出する以外に無い?

56 名前:デフォルトの名無しさん :2007/01/16(火) 22:30:10
いや

57 名前:デフォルトの名無しさん :2007/01/16(火) 22:36:32
>>55
激しく既出。

GetModuleFileName

正直いってこのスレの住人はうんざりしてるので
1スレ分くらいは読んだ方がもめなくて良い。

58 名前:デフォルトの名無しさん :2007/01/16(火) 22:43:23
SDK初心者です基本的な質問ですがよろしくオナガイシマス
MessageBoxの第二引数はLPCSTRなので
int型の数字を表示する場合、キャストしないといけないのですが
仕方を教えてもらえませんか

59 名前:デフォルトの名無しさん :2007/01/16(火) 22:46:59
>>58
SDK初心者じゃなくてプログラミング初心者じゃね?
単純なキャストじゃダメ。 sprintfとか。

60 名前:デフォルトの名無しさん :2007/01/16(火) 22:55:00
C++ならboost::lexical_castというキャストがある、というのはだめか?

61 名前:デフォルトの名無しさん :2007/01/16(火) 23:01:59
>>60
「単純な」キャストではないな

62 名前:デフォルトの名無しさん :2007/01/16(火) 23:02:57
>>59
やっぱりこのマンドクサイ方法しかないのかな
TCHAR buff[8];
_stprintf_s(buff, TEXT("%d"), Index);
MessageBox(NULL, buff, TEXT("数字"), MB_OK);
>>60
ぜひ教えて下さい、↑の書き方にほとほと飽きてキマスタ
.NETなら
Convert::ToString(L"Uint 1");
とかで出来るのに

63 名前:デフォルトの名無しさん :2007/01/16(火) 23:03:46
スマソ58=62です


64 名前:デフォルトの名無しさん :2007/01/16(火) 23:03:47
今後、ExtractIconの様に引数によっては戻り値が異なる関数を利用する場合は、
PtrToUlongを利用すべき?

例)
UINT nIconCount = (UINT)PtrToUlong(::ExtractIcon(::AfxGetInstanceHandle(), _T("Shell32.dll"), (UINT)-1);


65 名前:デフォルトの名無しさん :2007/01/16(火) 23:11:51
>>62
無理しないで自分に合った言語を選べばいいよ

66 名前:デフォルトの名無しさん :2007/01/16(火) 23:14:45
>>62
あのなぁ。
それを関数なりマクロなりにすりゃいいんだよ。
同じことを書いてると思ったら括り出すチャンス。

67 名前:デフォルトの名無しさん :2007/01/16(火) 23:18:02
>>65
無理したくないけど、させられるんです、ネィティブWindowsのコードって
むずかし〜わけわかんねー型変換とか、ワイド文字だマルチバイトだって
制約多いしC言語の宿命みたいなもんだが・・・・・


68 名前:デフォルトの名無しさん :2007/01/16(火) 23:20:00
API風に言うとwsprintfだろ普通

69 名前:デフォルトの名無しさん :2007/01/16(火) 23:21:26
>>62
#include <string>
#include <boost/lexical_cast.hpp>
#include <windows.h>

typedef std::basic_string<TCHAR> tstring;

int main()
{
  int x = 12345;
  MessageBox(0, boost::lexical_cast<tstring>(x).c_str(), TEXT(""), MB_OK);
}
iostreamに読み書きできるものならなんでも変換できることになっている。と言っても実質文字列と数値型くらいにしか使う機会がない気もするが。
ttp://www.kmonos.net/alang/boost/classes/lexical_cast.html

>>64
ToUlongなんだから、ULONG型で戻り値を受けようよ。

70 名前:デフォルトの名無しさん :2007/01/16(火) 23:21:56
>>68
wsprintfは1024バイトが上限。
_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_lを使うのがおっとこまえ

71 名前:デフォルトの名無しさん :2007/01/16(火) 23:23:49
>>69
PtrToUintか?
サンクス

72 名前:デフォルトの名無しさん :2007/01/16(火) 23:23:51
>>62
少しは頭を使えよ。
C++でMFC/ATL使ってるなら
CString Format(LPCSTR fmt, ...)
{
  CString str;

  va_list args;
  va_start(args, fmt);
  str.FormatV(fmt, args);
  va_end(args);
  return str;
}
みたいな関数でも作って
MessageBox(NULL, Format("%d", Index), _T("数字"), MB_OK);
とかやればいいだろ。

Cなら、同様にstdarg.hのマクロと_sntprintf()でも使って
MessageBox()自体のラッパでも書くんだな。

73 名前:デフォルトの名無しさん :2007/01/16(火) 23:26:26
>>69
58です
サンクス
Cも中途半端にいきなり.NETとかやってたんでC++弱いんだよねマジで

74 名前:デフォルトの名無しさん :2007/01/16(火) 23:28:56
>>73
そういう問題じゃないな。君の頭が回らないだけ。

75 名前:デフォルトの名無しさん :2007/01/16(火) 23:31:34
>>74
58だが
頭は回らないが、ティムポは良く動きますがなにか

76 名前:デフォルトの名無しさん :2007/01/16(火) 23:32:46
また違う誰かが、どっかで>>58の様な質問するから
そん時は>>73が誇らしく回答すればいいんじゃね?

このスレじゃないと思うけど。

77 名前:デフォルトの名無しさん :2007/01/16(火) 23:35:14
つか言語をまず指定するべきだろ
Cだと>>69は使えないわけだし

78 名前:デフォルトの名無しさん :2007/01/16(火) 23:43:12
#include <windows.h>
#define tostr(arg) (TEXT(#arg))
int main()
{
MessageBox(NULL, tostr(519), tostr(11), MB_OK);
}

ほらかんぺきだ

79 名前:デフォルトの名無しさん :2007/01/16(火) 23:49:45
#include<w...>

int main(void)
{
MessageBox(NULL, TEXT("123..."), TEXT("12222222222222222222222222222"), MB_OK);
return ...;
}

完璧だろ

80 名前:69 :2007/01/16(火) 23:50:36
>>77
60でC++ならと書いたところ、62で良しと言われたので69を書いた。

81 名前:デフォルトの名無しさん :2007/01/16(火) 23:52:12
>>78-79
お前らのやる気の無さは完璧すぎるwwwwwwwww

82 名前:デフォルトの名無しさん :2007/01/17(水) 00:11:32
プログラムの基礎が分かってないんだな
「型」というものが何か分かってれば
直接的に操れる分、それほど複雑でもないと思えるはず

83 名前:82 :2007/01/17(水) 00:14:37
誤爆ゴメン

84 名前:デフォルトの名無しさん :2007/01/17(水) 00:49:56
俺らに型を語るなんて10年早い

85 名前:デフォルトの名無しさん :2007/01/17(水) 01:09:20
俺らに語を型るなんて10年早い

86 名前:デフォルトの名無しさん :2007/01/17(水) 08:18:21
Windowsアプリケーションを起動するとき、
main関数、WinMain関数に達するまではどういう手順をふんでいるの?
ベタにアプリケーションのアドレスを0から解読して実行してるだけ?

それとも、ファイルヘッダの部分が存在して、
そこに示すアドレスからジャンプー>main関数、WinMain関数に行く訳?

また、アプリケーションのエントリポイントは、
固定値で、OSが勝手に判断しているわけ?


だれか、main関数、WinMain関数以前の処理を教えてくれませんか?
もしくは、詳しく説明しているサイト、
関連するMSDNページを知っていれば教えていただきたいです。

87 名前:デフォルトの名無しさん :2007/01/17(水) 08:50:46
こんなとこで聞くな


88 名前:デフォルトの名無しさん :2007/01/17(水) 08:54:45
http://www.activebasic.com/article/index.php?page=060630

http://codezine.jp/a/article.aspx?aid=403
http://codezine.jp/a/article.aspx?aid=412

http://b.hatena.ne.jp/entry/2239409


89 名前:デフォルトの名無しさん :2007/01/17(水) 08:58:20
http://codezine.jp/a/article.aspx?aid=419

90 名前:デフォルトの名無しさん :2007/01/17(水) 09:01:59
>>86
>それとも、ファイルヘッダの部分が存在して、そこに示すアドレスからジャンプ
このとおり。

>また、アプリケーションのエントリポイントは、固定値で、OSが勝手に判断しているわけ?
違う。 リンカでエントリを明示的に指示している。

通常暗黙のエントリポイントを指していて、ランタイムの初期化や グローバル/static オブジェクトの生成等
の処理を行った後に main や WinMain を呼び出している。
したがって、暗黙のエントリポイントは標準で連結されるであろうライブラリの何処か

>だれか、main関数、WinMain関数以前の処理を教えてくれませんか?
コンパイラ次第なので、スタートアップルーチンのソースがあるか次第。
VC6(インストール時に選択されてれば) は CRT/SRC/*.* にある。

91 名前:86 :2007/01/17(水) 09:23:36
>>87-90
どうもありがとうございます!
調べてみます

92 名前:デフォルトの名無しさん :2007/01/17(水) 21:20:03
すみません、データ共有について質問させてください
ファイル構成
common.h
typedef std::set<wchar_t*> wcset;
#pragma data_seg(".shared")
wcset* data = new wcset();
#pragma data_seg()

main.cpp common.hをインクルード
WinMainのあるほう
dll.cpp common.hをインクルード
DllMainのあるほう

この状態でmain.cppでdataにデータを追加しても
dll.cppのほうではデータが追加されません
(main.cppのほうでは追加されます)
defファイルもちゃんと定義しています
(#pragma comment(linker, "/section:.shared,rws")なども試しました)
どこがおかしいのでしょうか

93 名前:デフォルトの名無しさん :2007/01/17(水) 21:46:45
>>92
DLLがプロセスに読み込まれる度にnewで新たなオブジェクトが作られている予感。

また、setを初めとしたC++のコンテナは、要素を格納するメモリを内部で独自に確保しているから、
コンテナそのものを共有させても要素まで共有されない。

94 名前:デフォルトの名無しさん :2007/01/17(水) 22:04:30
allocatorを共有すればいいんじゃね?

95 名前:92 :2007/01/17(水) 22:27:12
>>93
ありがとうございます
なるほど、コンテナは避けたほうがよさそうですね

とりあえずwchar_t*配列に書き直して実行してみたのですがダメで
そもそも根本的な勘違いをしている気がしてきました
data_segは、DLLを呼び出すコードとDLL間でデータを共有するというよりは
DLLを呼び出すコードが複数あった場合に
DLLが別々のコードから呼び出された時も
同じデータを持つ機構って感じがするのですがどうでしょうか
なのでmainでデータ追加というのが
そもそも間違っているような気がしてきました

>>94
自分には無理そうです、すみません
アロケータは難しいイメージがあって
さらに共有となるとどうやっていいのかさっぱりイメージが・・・

96 名前:92 :2007/01/17(水) 22:50:39
コードを書いて確認してみました
int型変数をカウントアップするだけのexport関数を書いて
dll.cpp側でカウントアップし
アプリを複数起動したらカウントがちゃんと増えました
data_segは、dll.cppとmain.cppで、
グローバル変数のように使えるのかと思ってたんですが
データ共有ってそういうのではないっぽいですね
とりあえず、データの受け渡しをする関数を
書いたら何とかなりそうなので、それで頑張ってみることにします

97 名前:デフォルトの名無しさん :2007/01/17(水) 23:02:48
うろ覚えだけどdata_seg使う場合は、変数に初期化子付けないと
共有にならないんじゃなかったかな。

98 名前:92 :2007/01/17(水) 23:29:09
>>97
どうも、そうみたいですね
つけないと.bssセクションに置かれるとあります
一応自分が試したコードでは全て初期化して試してるけど
MSDNよく読んだら静的な初期化じゃないとダメらしく
上みたいにnewするのもNGの模様

99 名前:デフォルトの名無しさん :2007/01/17(水) 23:29:21
>>94
というより、共有メモリを確保するアロケータを使えというほうが、まだ適切。

>>95
wchar_t*の各要素も共有メモリ上に確保しないとだめだぞ。

100 名前:95 :2007/01/18(木) 00:05:35
>>99
ありがとうございます
今のところ、とりあえずwchar_t[10][10]みたいなのでやろうと思ってます

共有メモリ上でポインタを実現するとなると、
使ったことないんですがメモリマップトファイルを使うのでしょうか
MSDNには、baseからのオフセットでポインタが実現できるとありました
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vccore/html/_core_how_do_i_share_data_in_my_dll_with_an_application_or_with_other_dlls.3f.asp

101 名前:デフォルトの名無しさん :2007/01/18(木) 00:06:03
"C:\エロ動画.zip" にうpしました!

というようなもんだな。
データへのポインタは共有されているが、他のプロセスではそのポインタが意味をなさない。

102 名前:デフォルトの名無しさん :2007/01/18(木) 00:19:52
だって独立したメモリだもん

103 名前:デフォルトの名無しさん :2007/01/18(木) 02:55:54

common.h
typedef std::set<wchar_t*> wcset;
#pragma data_seg(".shared")
wcset* data = NULL;
#pragma data_seg()


にしておいて

DLLMainで

data = new wcset();

じゃないかな


104 名前:デフォルトの名無しさん :2007/01/18(木) 03:47:38
new wcset();

の時点で、その new したプロセスのみしかポインタの値が有効にならんでしょー

105 名前:デフォルトの名無しさん :2007/01/18(木) 06:38:06
#pragma data_seg(".shared")
wcset data_instance;
wcset* data = &data_instance;
#pragma data_seg()


106 名前:デフォルトの名無しさん :2007/01/18(木) 08:06:12
> wcset data_instance;

プロセスの数だけコンストラクタが動くんじゃないか?

107 名前:デフォルトの名無しさん :2007/01/18(木) 09:07:56
>>104
DLLにリンクしないつもりか?

108 名前:デフォルトの名無しさん :2007/01/18(木) 09:23:47
アクセサを自分で定義するなら >>103 でも正解のような気がする

109 名前:デフォルトの名無しさん :2007/01/18(木) 09:24:53
#pragma data_seg(".shared")
wcset* data = NULL;
#pragma data_seg()

こいつをどちらか一方

もう片方は
extern wcset* data;

後はどっかで
data = new wcset();

110 名前:デフォルトの名無しさん :2007/01/18(木) 09:33:40
data_seg に リンクカウンタ用意して DllMain の
DLL_PROCESS_ATTACH で リンクカウントUP & 初回なら new
DLL_PROCESS_DETACH で リンクカウントDOWN & 最終回なら delete
ってな感じか

111 名前:デフォルトの名無しさん :2007/01/18(木) 12:39:23
DLL_PROCESS_DETACH で リンクカウントDOWN & 最終回なら delete
してる間に別のプロセスが
DLL_PROCESS_ATTACH で リンクカウントUP & 初回なら new
してたら最悪のパターン
ミューテックスでも使うか?


・・・なんの話だっけ??

112 名前:デフォルトの名無しさん :2007/01/18(木) 14:33:33
なんだかよくわからないけど

#pragma data_seg(".shared")
char d[sizeof(wcset)] = {0};
wcset* data = NULL;
#pragma data_seg()

で、どっかでplacement newじゃだめ?

113 名前:112 :2007/01/18(木) 14:46:43
すまん
コンテナ内のメモリの確保が問題なんだな
アロケータ書くとかしないとだめか

114 名前:デフォルトの名無しさん :2007/01/18(木) 15:13:40
どっちにしろ同期処理は必須だからMutexとか使わないといけないし、
#pragma data_seg(".shared")だけで解決できる問題じゃないと思うけど。

115 名前:デフォルトの名無しさん :2007/01/18(木) 18:26:54
定義しているものしか共有できないから諦めろ

116 名前:デフォルトの名無しさん :2007/01/18(木) 22:08:00
難しい話をしているねぇ〜 まぁお茶でも飲もうぜ。

117 名前:デフォルトの名無しさん :2007/01/18(木) 22:52:14
new をオーバーライドすれば良かろうもん

118 名前:デフォルトの名無しさん :2007/01/18(木) 23:33:28
そんなにオブジェクトを共有したければ、アウトプロセスCOMサーバを作ればいいだろうに。

119 名前:デフォルトの名無しさん :2007/01/19(金) 08:12:31
>>118
IUnknown::AddRef();
IUnknown::Release();
ってやつね。

敷居が高そー

120 名前:92 :2007/01/19(金) 19:17:12
なんかすごい難しそうなことになってるなー
あれから試行錯誤した結果、もう共有は諦めて
mainからWM_COPYDATAを使ってなんとかしようと思ってます

ところで、上の96も、さらに間違っていたようで
ttp://www.codeproject.com/dll/hooks.asp
英語力が微妙なせいで間違っているかもしれないけど
main.cppと、main.cppとは別のdll.cppを呼び出したプロセスと
「偶然に」同じページにあったら共有できて
ページが違えば共有できない、っぽい
どちらにしろ、そんな偶然をあてにするコードは書くべきではないだろうけど。
(´Д`)もう投げ出したい

121 名前:デフォルトの名無しさん :2007/01/19(金) 20:15:55
  /\___/\
/ ⌒   ⌒ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < 投げ出せばいいじゃん
|   ト‐=‐ァ'   .::::|    \_________
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

122 名前:デフォルトの名無しさん :2007/01/19(金) 22:14:05
大きなデータの共有はCreateFileMappingじゃないの

123 名前:デフォルトの名無しさん :2007/01/19(金) 22:24:31
それはそうだけど、議題は内部にポインタを持つデータ構造の共有
STLだからアロケータ書かないとダメ

124 名前:デフォルトの名無しさん :2007/01/19(金) 23:00:56
ループしてるぞw

125 名前:デフォルトの名無しさん :2007/01/19(金) 23:24:17
ポインタを持たなければいい

126 名前:デフォルトの名無しさん :2007/01/20(土) 00:36:45
Cの世界に戻って考えたほうが、結局幸せになれる予感。
ポインタの代わりにオフセットで保持する位は、たいした事無いだろ。

127 名前:デフォルトの名無しさん :2007/01/20(土) 00:55:54
Cではポインタは普通に使うだろ
配列を使ってポインタやフリーリストを自分で管理するような仕事は、
むしろCのように便利にポインタが使えない言語でよくやったんじゃないか?

128 名前:デフォルトの名無しさん :2007/01/20(土) 00:59:50
僕ハッカー

129 名前:デフォルトの名無しさん :2007/01/20(土) 01:13:38
馬鹿バッカー

130 名前:デフォルトの名無しさん :2007/01/20(土) 09:19:57
まだやってんの?

131 名前:デフォルトの名無しさん :2007/01/20(土) 13:07:58
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われている
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにする
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ

132 名前:デフォルトの名無しさん :2007/01/20(土) 13:22:23
ポインタがいいよと君がいったから一月二十日はメモリ破壊日

133 名前:デフォルトの名無しさん :2007/01/20(土) 16:57:35
バカバッカー

134 名前:デフォルトの名無しさん :2007/01/20(土) 21:44:39
ttp://blog9.fc2.com/2/2log/file/vlphp5172.jpg
ttp://blog9.fc2.com/2/2log/file/vlphp5173.jpg
ttp://blog9.fc2.com/2/2log/file/vlphp5174.jpg
ttp://blog9.fc2.com/2/2log/file/vlphp5175.jpg
ttp://blog9.fc2.com/2/2log/file/vlphp5176.jpg
ttp://blog9.fc2.com/2/2log/file/vlphp5177.jpg
ttp://blog9.fc2.com/2/2log/file/vlphp5178.jpg

135 名前:デフォルトの名無しさん :2007/01/20(土) 21:59:34
>>134
続きをbzip2でクレ

136 名前:デフォルトの名無しさん :2007/01/21(日) 00:27:19
Vistaの場合、ExplorerのSysListView32から
各ファイルのITEMIDLISTを取得するってどうやるんでしょう?

以前のOSの場合、LVITEMのlParamに(非公式ながら)入ってたんですが……

137 名前:デフォルトの名無しさん :2007/01/21(日) 06:22:11

前スレでウィンドウのイネーブル/ディスエーブルについて質問したものですが、
どうもすみません。色々勘違いしてました。

当初やりたかった事は、
GUIアプリAが、ユーザーの操作により、GUIアプリBをCreateProcessします。
その時、アプリBが終了するまでアプリAの操作を禁止したいのです。
そして、アプリBがユーザーによって閉じられた時に
アプリAがフォアグラウンドになるようにしたいのです。

アプリBのメインウィンドウのオーナーを、
アプリAのメインウィンドウにすれば実現できるようです。

でも今回の場合、アプリBは私が書いたものではないのです。
アプリBのオーナーを指定する事はできません。

アプリAは私が書きます。
なのでアプリAのコードのみでウィンドウownと同じ事をしたかった訳ですが・・・

138 名前:デフォルトの名無しさん :2007/01/21(日) 06:22:56
<<Aのコード>>
自分自身をEnableWindow(FALSE)
CreateProcess(B)
メッセージループを回しながらBの終了を待つ。
Bが終了したら自分自身をEnableWindow(TRUE)&SetForegroundWindow

という風にしたら、一応近い感じにはなったのですが、
Bを操作中に、いったん無関係のアプリCに切り替えて
またBに戻すと、AはCの裏に来ています。
ここですでに嫌な予感がしたのですが、
この状態でBを終了すると、Aがフォアグラウンドにならずに
Cがフォアグラウンドで、Aはタスクバー上でピコピコしているだけです。

なんとかownと同じようにできないでしょうか・・・

139 名前:デフォルトの名無しさん :2007/01/21(日) 08:00:34
WaitForMultipleObjects
MsgWaitForMultipleObjects
WaitForSingleObjects

ただし、強制終了するときなんかのことを考えると
WaitForSingleObjectsはオススメできない

> イネーブル/ディスエーブル
せめて有効/無効って書いてくれ
一瞬何のことかと思った
いやまあ、今回は関係ないんだけどね

140 名前:デフォルトの名無しさん :2007/01/21(日) 10:01:14
日本語じゃなくてもいいから
せめてEnable/Disableって書いてくれ

141 名前:デフォルトの名無しさん :2007/01/21(日) 11:40:06
前スレの124か ?
> メッセージループを回しながらBの終了を待つ。
どのように変更したの。相変わらず、WaitForをつかっているの。
それと、AとBのウィンドウスタイルはWS_OVERLAPPEDかWS_POPUPか教えてくれ。

現段階の情報だけだと、
GetForegroudWindow()にAttachThreadInput()してからSetForgroundWindow()か。
ちらつくけど。

142 名前:デフォルトの名無しさん :2007/01/21(日) 11:43:06
アプリB起動時にAttachThreadInputしておく、かなあ。
でも、終了時に別のプロセスがフォアグラウンドになってオジャン、な予感もする。

143 名前:デフォルトの名無しさん :2007/01/21(日) 11:47:20
>でも今回の場合、アプリBは私が書いたものではないのです。
>アプリBのオーナーを指定する事はできません。

実は出来るんだなそれが


144 名前:デフォルトの名無しさん :2007/01/21(日) 12:05:05
俺ならアプリBにメッセージフック仕込んでWM_DESTROYのところで処理させるかな。
141の方法だとアプリBが終了したときに、Cがフォアグラウンドでもフォーカスを
奪ってしまうからお薦めできない。

145 名前:デフォルトの名無しさん :2007/01/21(日) 12:32:02
でもcuiは単純にはメッセージフック出来ないからそれもまためどい

146 名前:デフォルトの名無しさん :2007/01/21(日) 13:49:36
atoiなどの数値変換のwin32版ってありますか?

147 名前:デフォルトの名無しさん :2007/01/21(日) 14:36:37
StrToInt

148 名前:デフォルトの名無しさん :2007/01/21(日) 14:51:23
そこまではたどり着いたのですが、strings.hとやらをincludeしても使えないんです
MSDNも英語だし


149 名前:デフォルトの名無しさん :2007/01/21(日) 15:09:55
どこにもstring.hなどと書いてないのだが

Header shlwapi.h
Import library shlwapi.lib


150 名前:デフォルトの名無しさん :2007/01/21(日) 15:16:36
おお、出来ました。
MSDNの検索でトピックタイトルにSTRINGS.Hってのがあって
その中にStrToIntがあったのでこれをincludeするのかと思ってました


151 名前:デフォルトの名無しさん :2007/01/21(日) 17:13:55
shlwapi.dllはIE4に付属だがそれでもいいのか?

152 名前:デフォルトの名無しさん :2007/01/21(日) 17:17:49
それは問題ないです。IE4以上が入ってればつかえるんですよね?
あと_tcstolというのも憶えました。


153 名前:デフォルトの名無しさん :2007/01/21(日) 19:18:51
CryptoAPIを使用したいのですが、CertCreateCertificateContextを使用するの次のエラーが出ます。
「未解決の外部シンボル __imp__CertCreateCertificateContext@20 が(以下略)」
Crypt32.libはちゃんとリンクさせてあります。

次のAのようにしたところ、エラーが消えました
@プラットフォームSDK付属のCrypt32.libをリンク(SDKは2007/01/19に最新版をダウンロード)
AVisual Studio 2003に付属のCrypt32.libをリンク

また、「未解決のシンボル…」エラーが出る類似の例として、以下のページを見つけました。
http://forums.belution.com/ja/vc/000/241/58.shtml
このページの例では、VC++6.0付属のCrypt32.libをリンクしたことが原因だったそうです。

そこで質問です。
プラットフォームSDKについてくるCrypt32.libは古いVC++付属のものなのでしょうか?

154 名前:153 :2007/01/21(日) 19:20:25
>153だと誤解がありそうなので訂正。

@エラーが出る
プラットフォームSDK付属のCrypt32.libをリンク(SDKは2007/01/19に最新版をダウンロード)

Aエラーが出ない
Visual Studio 2003に付属のCrypt32.libをリンク


155 名前:デフォルトの名無しさん :2007/01/21(日) 19:42:12
>>152
_tcstolはWin32APIでないぞ。
それでよいなら、atoiには_ttoiが対応する。

156 名前:デフォルトの名無しさん :2007/01/21(日) 19:48:39
やっぱStrToIntにします

157 名前:デフォルトの名無しさん :2007/01/21(日) 19:49:46
そもそも今使ってる環境くらい書けよ


158 名前:デフォルトの名無しさん :2007/01/21(日) 19:56:28
VC6 WinXpでMFC未使用です

159 名前:デフォルトの名無しさん :2007/01/21(日) 20:17:14
Win32APIじゃ無いけどMS独自の拡張だし、別にいいじゃん

160 名前:デフォルトの名無しさん :2007/01/21(日) 20:20:38
>>153
両方手に入るなら自分で調べてみろよ
コマンドプロンプトで
FC /B ファイル名1 ファイル名2
でバイナリ比較できるから

161 名前:デフォルトの名無しさん :2007/01/21(日) 20:48:31
>160
VC++6.0のCrypt32.libが手に入らなかったりします。

162 名前:デフォルトの名無しさん :2007/01/21(日) 20:57:18
CryptoAPIの他の関数は問題なくリンクできるのか?

163 名前:デフォルトの名無しさん :2007/01/21(日) 21:07:32
>>153
dumpbin -EXPORTS crypt32.libしてみそ。
まぁPlatformSDKのlibディレクトリはたまに変なものが入ってたりするのは
確かかだが。
気になるんなら
以前なぜかlibcp.lib(どうも古いバージョンのC++ランタイム)が
入っていてハマったことがあるよ俺は。

164 名前:デフォルトの名無しさん :2007/01/21(日) 21:25:55
DwmExtendFrameIntoClientArea/DwmEnableBlurBehindWindow
わかんねーーーーー

165 名前:デフォルトの名無しさん :2007/01/21(日) 21:53:44
>>164
ttp://weblogs.asp.net/kennykerr/archive/2006/08/10/Windows-Vista-for-Developers-_1320_-Part-3-_1320_-The-Desktop-Window-Manager.aspx
ttp://www.codeproject.com/vista/VGGlassIntro.asp?df=100&forumid=346011&select=1762283

166 名前:デフォルトの名無しさん :2007/01/21(日) 22:13:05
>>164じゃないけどさ、
別なウインドウが乗っかってるウインドウのGlass化ってどうやるの?
例としては、「ガジェットの追加」の画面とか。
あれToolBarWindow32が乗ってるんだよね

167 名前:デフォルトの名無しさん :2007/01/22(月) 00:05:27
>162
他の関数については試してないです。これから試してみます。

>163
ありがとうございます。調べてみます。

168 名前:デフォルトの名無しさん :2007/01/22(月) 16:00:34
作成したソフトウェアに必要な画像や音楽のデータをソースコード内に組み込んで
ソフトウェアを起動するときには画像や音楽のデータを不要にしたいんですけどどうしたらいいですか

169 名前:デフォルトの名無しさん :2007/01/22(月) 16:14:29
>>168
日本語でおk?

170 名前:デフォルトの名無しさん :2007/01/22(月) 16:15:40
リソースに入れてLoadResourceで

171 名前:デフォルトの名無しさん :2007/01/22(月) 16:19:03
リソースはソースコード内に組み込んだと言えるのか…

172 名前:デフォルトの名無しさん :2007/01/22(月) 16:22:18
意を汲んでやれよw

173 名前:デフォルトの名無しさん :2007/01/22(月) 16:39:45
>>168
http://pc10.2ch.net/test/read.cgi/tech/1167325490/733
http://pc10.2ch.net/test/read.cgi/tech/1168868527/109

174 名前:デフォルトの名無しさん :2007/01/22(月) 16:44:38
>>168は釣りなのか、バカなのか...

175 名前:デフォルトの名無しさん :2007/01/22(月) 16:45:54
音楽データ等を 実行ファイル内に持つということは…
すんげーでかい実行ファイルになっちゃうんだが、問題おこさないのだろうか?
# リソースにしろ data_seg 直置きにしろ…

176 名前:デフォルトの名無しさん :2007/01/22(月) 16:49:36
>>175
MIDIデータのようなものならサイズはゴミみたいなもんでしょう

177 名前:デフォルトの名無しさん :2007/01/22(月) 16:54:36
要するにコンパイルしてできあがった実行ファイルだけで
画像を表示したり音を鳴らせるようにしたいんです
画像については1ピクセル毎のRGB値を調べて変数に格納してやってその数値を見ることで
元の画像を不要にできるんじゃないかと思ってるんですがこういうことに詳しい人いたら教えてください
そういうことができるソフトがすでにあったりしませんか

178 名前:デフォルトの名無しさん :2007/01/22(月) 16:57:14
>>177
>>170,>>173を100回音読してください

179 名前:デフォルトの名無しさん :2007/01/22(月) 16:58:11
>>178
お前のレスは全く無意味だな
分からんなら黙っとけよ

180 名前:デフォルトの名無しさん :2007/01/22(月) 16:59:10
>>177
こんなアホ久しぶりに見た
最高にわろたwww

181 名前:デフォルトの名無しさん :2007/01/22(月) 17:01:05
>>170以外の方法はスレ違いだしなあ

182 名前:デフォルトの名無しさん :2007/01/22(月) 17:01:17
>>177
リソースを「どうしても」使いたくないのなら
グローバルかstaticのchar[]配列として格納しておいて
CreateDIBSection()

183 名前:デフォルトの名無しさん :2007/01/22(月) 17:07:44
> 1ピクセル毎のRGB値

ビットマップもそうだろ
車輪の最発明したいんか?

184 名前:デフォルトの名無しさん :2007/01/22(月) 17:10:12
>>183
biComplession かけたこと無いが… 一応圧縮可能なんじゃね? <DIB

185 名前:デフォルトの名無しさん :2007/01/22(月) 17:10:13
別になってるってことは、ロードしてからの作業はもうできてるんだろうし、
ビットマップファイルを、 0x00,0x00,・・・・・・・・のソースに変換しとけばいいべw

186 名前:デフォルトの名無しさん :2007/01/22(月) 17:11:21
ああすいません>>170の方法でやれそうです
>>178が自分のレスを100回読めとレスしたからぶち切れました
スレ汚し失礼しました。適切なアドバイスありがとうございました

187 名前:デフォルトの名無しさん :2007/01/22(月) 17:12:46
切れる前にマルチを責められてる事に気がつけ

188 名前:デフォルトの名無しさん :2007/01/22(月) 17:14:02
>>186
低脳乙であります!!

189 名前:デフォルトの名無しさん :2007/01/22(月) 17:23:39
>>186
死ねや
ぼくの質問が流されただろうがハゲ

190 名前:デフォルトの名無しさん :2007/01/22(月) 17:45:05
>>189
知るかボケお前が死ね

191 名前:マータリしる :2007/01/22(月) 18:33:25
ttp://lake.kir.jp/es/kore.html

192 名前:デフォルトの名無しさん :2007/01/22(月) 19:03:03
食事中だボケ

193 名前:デフォルトの名無しさん :2007/01/22(月) 20:10:50
>>192
食事中に2chすな

194 名前:デフォルトの名無しさん :2007/01/22(月) 20:25:03
>>193
ヒント  つ ピザ

195 名前:デフォルトの名無しさん :2007/01/22(月) 20:30:48
ハズレ
A=食事中にしかできない

196 名前:デフォルトの名無しさん :2007/01/23(火) 05:30:16
>>194-195
どっちでも、かわいそう・・・

197 名前:デフォルトの名無しさん :2007/01/23(火) 06:35:29
すみません、このスレできくように言われたので、お願いします。


入力された文字列がファイルパスとして正しいか、を調べたいです。

単に指定された文字列のファイルが開けなかったから不正、ではなく、
Windows のパスとして不正な文字列 <>: 等、
エクスプローラで指定するとエラーになるケースを判別したいです。

すみませんが、皆さんのお知恵を貸してください。

198 名前:デフォルトの名無しさん :2007/01/23(火) 06:59:45
この中にあるかもしれない
ttp://msdn2.microsoft.com/en-us/library/ms538767.aspx


199 名前:デフォルトの名無しさん :2007/01/23(火) 08:18:07
>>197
PathGetCharType

200 名前:デフォルトの名無しさん :2007/01/23(火) 11:43:47
印刷用に作成したメタファイルをそのまま指定された送付先に
FAXで自動送信するプログラムを開発しています。
メタファイル自体は難なく作成できたのですが、
その先のFAX送信の方法が分からず困っています。

ぐぐって見たところfaxcomというcomコンポーネントがヒットしたのですが、
メタファイルが使用できませんでした。(ビットマップやTIFFに変換しても駄目)
PrintDlg等でFAXを選択して印刷すると送信はできそうなのですが
送付先の指定ができず、印刷時に送付先を指定するダイアログが表示されてしまいます。

何かいい方法は無いのでしょうか?ぐぐるヒントでもいいので教えてください。

201 名前:デフォルトの名無しさん :2007/01/23(火) 12:03:13
標準のFaxServiceとかは?
ttp://msdn2.microsoft.com/en-us/library/ms692855.aspx

202 名前:デフォルトの名無しさん :2007/01/23(火) 12:59:38
>>199 さん

ご教授、ありがとうございました。

203 名前:デフォルトの名無しさん :2007/01/23(火) 14:27:52
ttp://www.tt.rim.or.jp/~rudyard/torii009.html

204 名前:デフォルトの名無しさん :2007/01/23(火) 18:59:39
Windowsサービスを作成中なのですが
そのなかでGetCurrentDirectory()で実行しているサービスの
フォルダが取得できると思ったのですが
WindowsのSystem32フォルダを取得してしまいます。
自分自身のフォルダを取得するにはどのようなAPIを
使えばよいでしょうか?

よろしくお願いいたします。

205 名前:デフォルトの名無しさん :2007/01/23(火) 19:09:37
GetModuleFileNameから切り出してみたら?

206 名前:デフォルトの名無しさん :2007/01/23(火) 19:16:42
>>205
ありがとうございます。調べてみます。

207 名前:デフォルトの名無しさん :2007/01/23(火) 19:45:14
HWNDから、そのアプリケーションのHINSTANCEを取得したいのですが、
そういう関数があったら、教えてください

208 名前:デフォルトの名無しさん :2007/01/23(火) 19:51:50
GetWindowLong

209 名前:デフォルトの名無しさん :2007/01/23(火) 19:53:09
64bitを考慮するなら
GetWindowLongPtr
か…

210 名前:デフォルトの名無しさん :2007/01/23(火) 20:02:57
>>208
ありがとうございます。
こういうのってどうやって調べるんですか。
GetInstanceとか、予測しても無理っぽいし。
ソースとか本とかで掴んでくしかないのかな。

211 名前:デフォルトの名無しさん :2007/01/23(火) 20:05:36
>>209
ありがとうございます。

212 名前:デフォルトの名無しさん :2007/01/23(火) 20:19:25
>>210
経験とMSDN

213 名前:デフォルトの名無しさん :2007/01/23(火) 20:22:27
フルパスからファイル名を除くディレクトリまでを
切り出すにはどうしたらいいでしょうか?
ファイル名を切り出すAPIはあったのですが(GetFileTitle)

214 名前:デフォルトの名無しさん :2007/01/23(火) 20:29:26
>>213
>>198

215 名前:デフォルトの名無しさん :2007/01/23(火) 20:33:56
>>212
MSDN見てたら、結構いけそうな気がした。
てきとーに読んでみると結構おもしろいね。

216 名前:200 :2007/01/23(火) 20:55:46
遅レス失礼

>>201
参考にさせてもらいます。ありがとうございました。

217 名前:デフォルトの名無しさん :2007/01/23(火) 21:06:35
はじめまして。
インターネット上のJPEGファイルをダウンロード(HTTP)し、ウィンドウに表示する
プログラムを作成しています。
InternetOpenでファイルを読み込んだあとの処理に悩んでいます。
いったんhoge.jpgなどと書き出して、JPEGLIBで読み込むかOleLoadPicture
で読み込む方法は思いつくのですが、もっと効率よく
メモリ上のJPEG画像を表示する方法はありますか?

218 名前:デフォルトの名無しさん :2007/01/23(火) 21:17:36
>>208-210
そのラッパが<windowsx.h>にGetWindowInstanceとして存在するよ。

219 名前:デフォルトの名無しさん :2007/01/23(火) 21:25:47
>>217
libjpeg

220 名前:デフォルトの名無しさん :2007/01/23(火) 21:32:58
IEやFirefoxなどはどうやって表示しているのでしょうか、自前?

221 名前:デフォルトの名無しさん :2007/01/23(火) 21:48:05
>>220
いや、レンダリングエンジンを塚テル。
それをYOUもつかっちゃいなよー

222 名前:デフォルトの名無しさん :2007/01/23(火) 21:51:18
JPEGならGDI+で扱えるな

223 名前:デフォルトの名無しさん :2007/01/23(火) 21:56:05
>>220
ごめん、前の流れ見てなかった。
>>221は忘れて

224 名前:デフォルトの名無しさん :2007/01/24(水) 00:29:44
ちょっとPostMessageについて質問させてください。

Internet ExplorerでPDFを表示させると、ブラウザの中でAcrobatが起動して
PDFが表示されますよね。その状態でInternet Explorerを終了させても
Acrobatのプロセスが残り続けるので、外部から終了させようと思い、
下の手順でやってみたんですが、終了できません。
char szClassName[64];
memset( &szClassName, NULL, 64 );
GetClassName( hwnd, szClassName, 64 );
if( strcmp( szClassName, "AdobeAcrobat") == 0 ){
 PostMessage( hwnd, WM_CLOSE, 0, 0 );
}

この方法は使えないのでしょうか?TerminateProcessは使わないで
終了させたいのです。環境はVCでMFC不使用、Acrobatのバージョンは7です。

225 名前:デフォルトの名無しさん :2007/01/24(水) 01:08:46
>>224
>使えないのでしょうか?
試したの?

226 名前:デフォルトの名無しさん :2007/01/24(水) 01:13:56
>>224
あー、すまん試してたんだな。

それはそもそもウィンドウハンドルを取得できてるのか?
FindWindowとかで。でもstrcmpで比較してる辺り取得してるっぽいな

じゃあ、対象はアイコンか?


227 名前:デフォルトの名無しさん :2007/01/24(水) 01:18:18
まぁ、WM_CLOSEがpostできたとして
終了してくれる保証なんてないんだけどな。

228 名前:デフォルトの名無しさん :2007/01/24(水) 02:06:31
保存して終了させますか?とかのウィンドウが出たりするやつはうざいな

229 名前:デフォルトの名無しさん :2007/01/24(水) 02:09:41
228の作るアプリは使いたくないな

230 名前:デフォルトの名無しさん :2007/01/24(水) 02:44:45
>>228
多少解るぜ俺も

大抵バイナリエディタでちょっと弄れば消せるからいいんだけど

231 名前:デフォルトの名無しさん :2007/01/24(水) 02:59:45
>>207
Windowsのハンドルと、モジュールのハンドルには直接的な関連性がないためできない。
まずはWindowsの基礎を勉強してこい。

232 名前:デフォルトの名無しさん :2007/01/24(水) 03:02:07
WM_CLOSEをポストしてタイムアウトしたら素直にTerminateProcessでいいかと。
そもそも終了時にユーザーの入力待ちに入る可能性のアプリはどうしようもないし、個々のアプリの仕様に合わせてを入力をエミュレートするなんてのは泥臭い

233 名前:224 :2007/01/24(水) 07:19:46
>>226
EnumWindowsのコールバックに登録してやってます。
ウィンドウハンドラは取得できています。

>>227,232
TerminateProcessでやるとゴミが残りそうで心配なのです。
思いつく中で一番綺麗に終了させる方法がWM_CLOSEだったのですが、
やはりTerminateProcessで強制終了させるのが確実な方法になるみたいですね。
でも、あきらめきれないので他の方法も考えてみます。

234 名前:デフォルトの名無しさん :2007/01/24(水) 07:51:22
>>233
>232をよく読め。死亡要求メッセージを送った後、死んでくれなければ殺すということだ。

235 名前:デフォルトの名無しさん :2007/01/24(水) 08:03:15
>>234
>233をよく読め。TerminateProcessでやるとゴミが残りそうで心配なのですということだ。

236 名前:デフォルトの名無しさん :2007/01/24(水) 08:49:35
>>235
>234をよく読め。取り敢えずWM_CLOSEで死ねばTerminateProcessを使わないで済むだろ。

237 名前:デフォルトの名無しさん :2007/01/24(水) 08:53:09
>>224
たぶん、そんなことは聞いてないとか言われそうだが、
いちおう張っとくw

Web ブラウザを閉じても Acrobat.exe または AcroRd32.exe が終了しない
ttp://support.adobe.co.jp/faq/faq/qadoc.sv?229657+002

Adobe Readerなら8に上げりゃ済む話しなんだが・・・

238 名前:デフォルトの名無しさん :2007/01/24(水) 09:24:01
WM_CLOSEってコンソールアプリケーションにも有効ですか?
っていうか有効みたいなんですけど、ウィンドウがないのに
なぜ?

239 名前:デフォルトの名無しさん :2007/01/24(水) 09:43:59
SYSTEMメニュー持ってて閉じるが有効ならば
デフォルトのWindowProcなら閉じる

240 名前:デフォルトの名無しさん :2007/01/24(水) 10:13:53
>>238
窓ならあるだろ、ConsoleWindowClassのいわゆるDOS窓が。
そいつがウィンドウメッセージを受け付けている。

そいつにWM_CLOSEを送りつけると、コンソールアプリには結果的に
CTRL_CLOSE_EVENTが送られる。
デフォルトではそれで直ちに終了するが、
SetConsoleCtrlHandler()を用いて、そうしたイベントを捕捉することもできる。

241 名前:デフォルトの名無しさん :2007/01/24(水) 15:35:37
「保存しますか?」等をブロックするのに
WM_QUERYENDSESSION を Post してから
WM_CLOSE を Post するのはどうだろうか?

242 名前:デフォルトの名無しさん :2007/01/24(水) 15:43:08
Postしちゃらめぇぇぇ Send ですたわ

243 名前:デフォルトの名無しさん :2007/01/24(水) 16:05:14
窓の閉じ方なんて、MSDNに普通に載っているだろ

244 名前:デフォルトの名無しさん :2007/01/24(水) 20:07:15
OSはTerminateProcessでプロセスが保持してるオブジェクトを全て破棄する。だからゴミは残らない
残るとすれば殺されるプロセスがするべき後始末がされないことで、ファイルとかレジストリとかDBに消されるべきものが残ることがある

245 名前:デフォルトの名無しさん :2007/01/24(水) 21:12:58
だからそのゴミをいってるのだろう

246 名前:デフォルトの名無しさん :2007/01/24(水) 21:20:20
正常終了する保証がないならゴミがでるのを心配してもしょうがないわな

247 名前:224 :2007/01/24(水) 23:15:04
>>273
情報サンスクコ。そもそもの始まりはそのFAQからなんです。
5分とか10分とか放置すれば消えるってあるんですが、消えなくて困ってて。
終了したプロセスのくせに何十MBもメモリ食ってるのが納得いかなくて、
ガリガリとソース書いてるんです。

で、ウィンドウハンドルは一応取れているので、SendMessageTimeoutで
タイムアウト設定して、WM_CLOSEを投げるようにしたんだけど、終了するときと
終了しないときがあってさらに困ってる状態。
WM_COMMANDとSC_CLOSEでも上手くいくときといかないときがある。
WM_DESTROYを投げると確実に終了してくれるのだが、WM_DESTROYって
外から投げるようなメッセージではないと考えてて。AcrobatをSPY++で見ると、
WM_CLOSEが投げられてて終了してるので、さらに困ってる。

あ,長文こめん。

248 名前:デフォルトの名無しさん :2007/01/25(木) 00:22:49
SetProcessWorkingSetSizeが使えないかな、とふと思った。

249 名前:デフォルトの名無しさん :2007/01/25(木) 00:28:19
質問ですが
IEのツール→インターネットオプション→LANの設定→プロクシサーバのチェックの
ON/OFFは何処の関数を使えば制御できるのでしょうか?

250 名前:デフォルトの名無しさん :2007/01/25(木) 00:29:15
もしかしてVistaってIShellExecuteHook サポートされてない?
HKEY_CLASSES_ROOT\Interfaceにも該当IDがないんだが


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.