Win32API質問箱 Build13

このエントリーをはてなブックマークに追加
1前スレ953
.NET Framework!? 知らんな!!
そんなヤル気のあるネィティブプログラマ集まれ!
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は>>2 ぐらい...
2前スレ953:03/07/30 16:15
3あぼーん:あぼーん
あぼーん
4_:03/07/30 16:25
もつかれ
6デフォルトの名無しさん:03/07/30 18:08
>>1

早速だけど、質問。

コントロールパネル → マウス → ポインタとたどっていくと、
表示可能なシステムカーソル一覧が表示されるけど、
その中の 「手書き」とかかれているカーソルをシステムカーソルとして
呼び出すことは可能ですか?

SetCursor( LoadCursor( 0, IDC_WAIT ) );
のように呼び出したいのですが。
7_:03/07/30 18:11
>>6
勘と試行錯誤の結果IDは32631らしい。
LoadCusor(0, MAKEINTRESOURCE(32631))
しかし32631や7F77で検索してもドキュメントが見つからない。
使用は控えるべきかも。
APIでいいのかなぁ。適切なスレがあったら誘導お願いします。

仮想リストコントロール(オーナーデータ)なるものに手を出してみたんですが、
LVN_GETDISPINFOでテキストを返す正しい方法がわからないでつ。

LPNMLVDISPINFOのitem.pszTextに指定するというのは分かるんですが、
文字列へのポインタを指定するのか、こいつにコピーしていいのかが分からないのです。

なんでこんなところで詰まってるかというと……
MSDNの仮想リストコントロールのページ(日本語)のサンプルコードはlstrcpyしてる。
一方、MSDNからDirlv.exeっつーサンプルを落としてみると、
staticなバッファのポインタを渡している。

という実体でして。どっちが正しいんですか?(つД`)
間違ったらかなり痛い事態を引き起こしそうだよ……
109:03/07/30 19:57
sageてるし……

解には辿り着いてないんですが、少し見えてきました。

item.cchTextMaxを覗いてみると260, 264, 1024の3種類が入ってくるようです。
列挙時に260、マウスでポイントすると264と1024という感じ。
pszTextの方もその3種類毎に固定のアドレスが入ってる模様。

これはバッファが用意されてると考えてよいのでしょうか。


となると別のアドレスを突っ込むと勝手に解放されたりする危険が
ありそうなんですが、用意されているバッファが固定なところから察するに
逐一確保/解放してるわけではなさそうなので大丈夫なのかな。
>>9
MSDNの説明だと、どっちでもいいみたいだね。
ただ、ポインタを突っ込む場合は、その項目が削除されるまで
文字列を解放したり中身を変更しちゃいけないと。

>>8
penwin.hに入ってるIDC_PENってのがそれっぽい。
129:03/07/30 20:48
>>11
むぅ、どっちでもいいんですか。
とりあえずlstrcpynする方向で進めてみます。
俺はアイテムのlparamにnewした文字列へのポインタを入れといて、
そのポインタを突っ込んでる。
LVM_INSERTITEMで自分で設定したのがコピーされるのではないのか?
159:03/07/30 21:20
>>13-14
LVS_OWNERDATAなので、LVM_INSERTITEMとかはしないです。
16デフォルトの名無しさん:03/07/30 23:03
外部アプリのメニューを操作するプログラムを作りたいのですが、
どうすればいいでしょうか?
具体的には「既に起動しているプログラムをひとつ選んで
ファイル(F)→開く(O)を実行する」みたいなことができるプログラムです。
keybd_event以外で作りたいのですが、いい方法があったら教えてください。
お願いします。
17名無し@沢村:03/07/30 23:08
学校のおじさんのつくったWin32APIでプログラミングしている、へたれたちのいるスレはここですか?
18 :03/07/30 23:08
WM_COMMANDでもポストすれば?
Win32 APIじゃ無いかもしれませんが
以下のソースがコンパイルできないのはなぜなのでしょうか?

struct S_STR
{
const int i;
} g_i[] ={
1,2,

};

// エラー
error C2440: 'initializing' : 'const int' から 'struct S_STR' に変換することはできません。(新しい動作 ; ヘルプを参照)
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。

環境
DEV VC++6.0
OS Windows2000
C++ソース
2019:03/07/31 02:03
もうチョット判りやすくしました.
(違うものになってる気が...)

struct S_STR
{
const int i;
const int j;
} g_ij[] ={
{1,1},
{2,2}
};

//エラー
error C2440: 'initializing' : 'const int' から 'struct S_STR' に変換することはできません。(新しい動作 ; ヘルプを参照)
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。
思い切りスレ違いじゃないですか。何考えてんですか。
いいですよ、コンパイルしてください。勘違いソースを。それで満足したら帰って下さい。
C++の入門書を30回ぐらい読み直せ。
246:03/07/31 09:57
>>8, >>11
出来ました。Thanks!
確かに penwin.h に IDC_PEN で定義されていますね。
でも英語版のMSDNにも書いてないうえに、penwin.h が PlatformSDK に無い
ところを見ると、あまり推奨されていないんでしょうか…
>>19
みたいなのにも>>23のようにマジレスしてくれるならこのスレも安心だ
>>1
.NETもWin32も両方やっているのですが、出入りしてもいいですか?
.NETの質問をしなければ許す
281:03/08/01 05:39
>>26
前スレの1をコピペしただけだから、
あまり深く気にしないでくれ
291:03/08/01 06:49
>>26
出入り禁止
くせーぞ豚が
3026:03/08/01 09:09
>>27
回答ばかりしているので、たぶん質問はしないと思います。
すみません、NETって南下の略なんですか?
日本教育テレビ。

今のテレビ朝日のことだよ。
33デフォルトの名無しさん:03/08/01 18:04
コマンドプロンプトからWin32アプリケーションを起動して
起動もとのコマンドプロンプトに文字を出力するにはどうすればいいのですか?

>>33
AllocConsole
>>33
main
勉強に何か作ってみようと思ってるんですけど
いろんなことを含んでて、勉強で作る定番みたいなプログラムってないですかね?
Win32APIを使用した数当てゲーム

 永 
hello world
>>36
C:\windows\System32\calc.exe
C:\windows\System32\mspaint.exe
どちらもサブセットでいい
「それっぽいの」作ってみそ
フルパスなのがいやらしい
42山崎 渉:03/08/02 02:05
(^^)
>>34
それ、サービスから使える?
>>41
%windir%\system32\calc.exe
%windir%\system32\mspaint.exe
>>36
2chブラウザ
>>43
サービスから何か出力したいならイベントログを使うのが定番
デバッグ目的ならOutputDebugString
>>46
> サービスから何か出力したいならイベントログを使うのが定番

はぁ ?
普通にファイルに吐いときゃいいと思うが。
イベントログはあくまでもイベントを記録するもんだから、処理結果なんか吐いてどうするつもりだ ?
48デフォルトの名無しさん:03/08/03 04:03
質問の仕方が不味かったかな
つまり、
@コンソール上から起動した時はそのコンソール上に文字を出力したい
Aエクスプローラーなどから直接起動した時はコンソールを作りたくない
というようなことをやりたいんです

>>34
AllocConsole 使うとコンソールが強制的にできてしまって
そこには文字を出力出来るけど起動もとのコマンドプロンプトに
文字を出力できません

>>35
コンソールアプリケーションにするとコンソール以外から起動した時に
コンソールができてしまいます

説明へたですみません
49_:03/08/03 04:10
>48
不可能。
Subsystem:consoleと、Subsystem:windowsの
動作の違いは何によるものか考えれ。
それぞれ、スタートアップルーチン以前に、
起動元/subsys console     windows
console    なにもしない コンソールからデタッチ
windows   AllocConsole なにもしない
という動作が、Windowsによって行われる。
>>50
よくわかりました。ありがとうございます。
XP以降なら
AttachConsole(ATTACH_PARENT_CONSOLE)
できるかも(未確認)
>>52
調べて見ます。ありがとうございます。
54デフォルトの名無しさん:03/08/03 15:11
アプリケーションが終了する前にファイルに書き込む方法を教えて下さい。
以下の関数をWM_CREATEやWM_TIMERの所に置いた場合上手く書き込めるのですが、
WM_DESTROY,WM_QUITの所に置いた場合何故か上手くいかないのです。

void func(){
HANDLE hf;char str[]="てすと";DWORD WriteByte;

hf=CreateFile("a,dat",(省略));
SetFilePointer(hf,0,NULL,FILE_END);
WriteFile(hf,(LPVOID)&str, (lstrlen(str)+1)*sizeof(char), &WriteByte, NULL);
CloseHandle(hf);
}
WM_QUITはそれを見てメッセージループの終了を判定するためのものだから
ウィンドウプロシージャにcase WM_QUITとか書いても一生飛んでこないぞ
windows ってコンソールもウィンドウも一緒くたになってるんだな
unix にみたいになってる訳じゃないのね
>>56
×windows ってコンソールもウィンドウも一緒くたになってるんだな
○windows ってコンソールもターミナルも一緒くたになってるんだな
WM_DESTROYなら、PostQuitMessageの前に呼べばうまくいくはず。
59デフォルトの名無しさん:03/08/03 17:38
>58
上手くいきませんでした・・・
DestroyWindowしていない悪寒
61デフォルトの名無しさん:03/08/03 17:58
>60
その通りでした
有難うございます
62デフォルトの名無しさん:03/08/03 18:01
STATICコントロールとかのフォントって変更できますか?
HFONT font=〜;
HWND HwndStatic;
SetFont(HwndStatic,font);
こんなメソッド一発でそれ以降ずっとそのフォントで描画されつづける関数はないのでしょうか。
サブクラス化してWM_Paintをオーバーロードしないとダメですか?
>>63
WM_SETFONT送れ。
フォントは親ウィンドウのWM_CREATEで作って、
WM_DESTROYで消すのがオススメ。
>>64
できました。どうもありがとうございました。
Win32APIではなかったかもしれないんですが
キーボード入力を簡単にエミュレートする関数を教えてください

確か1行でキー入力をエミュレート出来たんですけど
忘れてしまったんです
お尻でしたら教えてください
keybd_event()
>>67さん ありがとうございまーす(^^@
FindWindowで他のアプリのハンドルをゲットしたんですけど

hwnd = FindWindow("CAPP",NULL);
if( hwnd =! NULL) { ← この処理

この後hwndの値が変わってしまうんですけど何ででしょうか?
>>69
ネタ?
>>all
何でDelphiつかわないの??
7369:03/08/05 00:40
>>70
ネタじゃなくって本当に間違えました
ビックリマークは反対に付けるんですね
>>71さん ありがとう
ほんのりワロタ
>>72
ネタ?
76デフォルトの名無しさん:03/08/05 03:47
>>72
初心者用だから
77デフォルトの名無しさん:03/08/05 03:48
おっぱい!おっぱい!おっぱい!
巨乳すぎる程の美女たち
おっぱい好き集まれ!!
http://www.exciteroom.com/
仮想キーコードに付いて教えてください
 _ ← このキーは VK_ 何でしょう? 16進数でも良いので教えてください

106日本語キーボード使ってます
79_:03/08/05 04:10
VK_OEM_102 = 0xE2;
>>80
出来ました、ありがとうございます〜♪
82デフォルトの名無しさん:03/08/05 13:52
ウィンドウズのスタートメニューがあるバー、タスクバーって言うのでしょうか?
これの位置と幅を取得する方法を教えて下さい。
83デフォルトの名無しさん:03/08/05 14:18
>>82
正式じゃないと思うけど、調べるのも面倒なので

GetWindowRect(FindWindow('Shell_TrayWnd', nil), l_rcTaskbar);

で取得してる。
正式にはこれかな
SHAppBarMessage(ABM_GETTASKBARPOS, pabd);
スタートメニュー呼び出す方法教えて
って、あれってメニューなのカナ?
>>85
お約束だが、SendInput
keybd_eventでウィンドウズキーを送る
>>86-87 それだと、キーコードを送るだけですよね?
スタートメニューを任意の位置に表示するには、
Windowsキーコード送った後に、スタートメニューウィンドウが
生成されるのを待って、SetWindowPos とかでいいんでしょうか?
>>88
SHAppBarMessageで任意の場所に移動してからキーコード送るとか
>>88
なんでそんなわけのわからんことをしたいのか素朴な疑問
>>90
そんなわけのわからんことの出来るツールが一時期出回ってたような。
デスクトップの任意の場所をダブルクリックでスタートメニューを表示、とか。
92yoko:03/08/06 15:27
http://www.kumei.ne.jp/c_lang/sdk2/sdk_127.htm
のサンプルを VS2003 で作っているのですが、コンパイルが
127 error LNK2019: 未解決の外部シンボル __imp__InitCommonControlsEx@4 が関数 _WinMainN@16 で参照されました。
とでてとまってしまいます。
#pragma comment(lib, "ScrnSave.Lib")もいれているのに・・・
ちなみにVC6だと問題なくコンパイルできてしまいます。いったいどこを
ちぇっくすればいいでしょう・・・?
>>92
MSDNライブラリで、
「InitCommonControlsEx」に必要なインポートライブラリを調べて、
そのライブラリをプロジェクトに追加する
>>92
それって最新のSDK使ったときも同じエラーが出るんだよね
壁紙の部分に描画をしたいのですが良い方法ご存知ないですか?
GetDesktopWindow()を使ってやってみたんですがデスクトップ上の
アイコンやウィンドウの上にも描画されてしまいます。
>>95
壁紙に直接描いて、壁紙入れ替えればいいんでない?
壁紙にカレンダー描画する奴とかそんな感じだよ。
>>95
デスクトップのリストビューをフックして、WM_ERASEBKGNDで……ダメかな
なんかGUIガリガリ作っていくうちに
HSPみたいになっていくのは俺だけ?
その形容が伝わらん
>>96 >>97
レス有難う御座いました。

レスを参考にしてデスクトップのリストビューをフックして
サブクラス化してWM_ERASEBKGNDのとこで描画したら
出来ました。助かりました。
101デフォルトの名無しさん:03/08/08 18:25
>>98
簡単なツールならHSPが便利だよな〜
サクっと作れる
嘘だ。
_beginthread でクラスのメンバ関数を呼ぼうとするとコンパイルが通らないんだけど、

とタバコ屋のおばあさんに言われたんですけどわかりません。

_beginthread(void,int,int)' に一致するものが見つからない

と言われるんだそうです。コンパイラは BCC 5.5 です。

どなたかお分かりになるでしょうか。
104デフォルトの名無しさん:03/08/08 19:19
ネタ無視
_beginthreadは*WIN32APIじゃない*ので該当の処理系のスレへ。
そう。ここやったら、CreateThreadとかやな。
101だがHSPの話は本当
簡単なツールやスクリーンセーバーとかはHSPが楽
今やDirectXによる3Dネット対戦ゲーすら作れるからね

APIを使うときは微妙に面倒だったり
プログラムファイルサイズがでかい
実行速度が遅い

など問題もあるが
>>107
スレ違いマジレスは去れ
>>107

その辺のバランスがけっこう取れているのがVCL(特にDelphi)なんだよね。
CreateWindowで(HMENU)の欄に0を入れるとVC上からはウインドウは作られますが、
エクスプローラーからはウインドウは作られません。NULLだと作れます。
仕様ですか?
原因が解ったけど、いまいち納得(理解)出来ないです…
アクセラレータキーの設定についてです。
LoadAccelerators は問題ないのですが、アクセラレータキーを押して
TranslateAccelerator で WM_COMMAND にいった時に
wParam の値が 40001 になるはずが 10557 なんです。
そのためにswitch文を何もせずに一気に抜けてしまうんですよ・・・(涙)
どこがおかしいのかさっぱりワケワカメっす。
何かしらの指南をお願いします。
112デフォルトの名無しさん:03/08/09 00:26
おっとぅっ、あげるっす。
>>111
10557じゃなくて105537(=0x19C41)っしょ。
wNotifyCode = HIWORD(wParam);
wID = LOWORD(wParam);
wNotifyCodeはアクセラレータの時1になります。
>>110
ふーん
WM_CREATEで
GetMenu() <ぬるぽ
return ガッ
みたいなことになってるのかな?
116デフォルトの名無しさん:03/08/09 09:58
>>115
ここにNULLと0の違いが書いてあんの?
別に引数のhMenuにNULL入れようが、0を入れようが、
動作が変わるとは思えないし、試しても変わらないんだが・・・

どんな環境でやってんだろ・・・
118デフォルトの名無しさん:03/08/09 11:13
>>117
どっかじぶんのヘッダで#defineし直してるとか?
119111:03/08/09 12:15
>>113
確かに 10557->105537 です。

ありがとうございます
LOWORDしてなかっただけなんですね。

恥ずかしい。もっと勉強しないと・・・
120デフォルトの名無しさん:03/08/09 13:16
EnumDisplaySettingsで得られる画面モードが
画面のプロパティで選択できるものよりも少ないのですが
どうすれば全ての設定を列挙できるのでしょうか?
121110:03/08/10 00:12
RegisterClass()とCreateWindow()をDLLにしています。
*.EXEも*.DLLもリリースモードでコンパイルしています。
#defineは特に使っていません。
#pragma comment(linker, "/opt:nowin98")を使っています。
ttp://www.geocities.co.jp/SiliconValley-Bay/1021/dame.zipにファイルを置いてみました
hmenuが初期化されていないようだが、、、
123110:03/08/10 01:47
hmenuは初期化は必要ですか?
とりあえず0が入っているみたいなのですが?
いずれにせよ、ふつうにWindowsは出てきたわけだが。(W2Ksp4)
Windowsか
2つ起動させば2つ出てくるしね。
> hmenuは初期化は必要ですか?
必要。
> とりあえず0が入っているみたいなのですが?
たまたま偶然運良く0が入ってるのを見ていつもそうだと
思う馬鹿はC/C++使うな。
128デフォルトの名無しさん:03/08/10 04:34
・あるパスの親ディレクトリの取得方法
・あるパスがファイルかどうかの判断
・ファイルでそれがリンクだった場合参照先パスの取得方法

をそれぞれどうやってやるのか教えてください。
できればCOMは使いたくないです。。。
129_:03/08/10 04:52
>>128
ちっとはググれよ。

> ・あるパスの親ディレクトリの取得方法
".."

> ・あるパスがファイルかどうかの判断
GetFileAttributes

> ・ファイルでそれがリンクだった場合参照先パスの取得方法
はぁ? リンク? ショートカットの間違いじゃねーの?
WindowsCEならCOM使わずに(少なくとも表面的には)できるAPIがあるが。
131128:03/08/10 10:53
>>130
すみません、ありがとうございました。
130=ショートカットの拡張子が.lnk=linkなことを知らないやつ
リンクというとちょっと違うような・・・
ハードリンクはNTFSに限り許されているが。
135110:03/08/10 12:58
>たまたま偶然運良く0が入ってるのを見ていつもそうだと
>思う馬鹿はC/C++使うな。
馬鹿です。
VC上では0が入り、エクスプローラーからは783647430が入るみたいです。
参照先パスの取得方法や「リンク」と「ショートカット」の違いを知らないくせして
トンチンカンなこと言ってる知ったか厨が紛れ込んでいるな。
まぁ、仕方がないか。今は夏休みだからな。
137デフォルトの名無しさん:03/08/10 13:34
>>128
COMはイヤ、ってSH_*系もダメなの?
コンソールを表示しないようにして
batファイルを実行してその戻り値を利用したいのですが、
system関数のコンソールを表示しない版の関数を教えて下さい。
>>138
CreateProcess API の何番目かの引数に何かしら設定すればよいはず。
>>139
漏れ、昔それを色々と試したけど、結局ダメだった。
どうやっても、起動直後に一瞬だけ表示されてしまうのは防げなかった。
漏れのやり方がヘボかったのかも知れんが...。
>>140
CREATE_NO_WINDOW で問題ないはずだけど?
あ、Win9xだとダメだが。
SetStdHandleで標準出力を匿名パイプかなんかにすればいい気がするが、
手元にWin9xがないので検証不能だな。
143138:03/08/11 12:15
>>139-142
報告遅れましてすいません。MSDNで
CreateProcessについて調べて、exeファイルだと
コンソールを表示せずに実行することができるようになったみたいですが、
(WinXP Home)batファイルでは、実行自体がされません。
CreateProcessは非0を返しているのですが・・・

↓が試したソースです。間違えていれば教えてください。
↑試したソース(馬鹿には見えない)
>>143
CreateProcessのコマンドラインに
cmd /c <batファイル名>
を渡してる? CreateProcessはそこまで面倒見てくれなかったはず
145138:03/08/11 12:22
>>144
もうちょっと落ち着いて〜っでヽ(`Д´)ノ ウワァァァン
146138:03/08/11 12:37
やっぱりできない。↓に該当部分のソースをうpしましたので
間違いがあれば教えてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=6
第2引数を NULL にして
第1引数を "Cmd /c test.bat" にしてみてはどうじゃろ?
148138:03/08/11 14:07
>>147
試してみました。…が、プロセス自体が起動できないようです。
(CreateProcessが0を返します。)
ハンドルリークやGDIリソースリーク個所を特定できる方法ってありませんか?

タスクマネージャで「ハンドル」や「GDIオブジェクト」を観察することで、検出は
できるみたい(増えつづけてるからリークしてるな、と)ですが...
Win32API氏ね、時代は.NETFramework様んだよ!
151デフォルトの名無しさん:03/08/11 16:49
すみません、MFC/SDKどちらでも、
他のアプリケーションが起動する直前にそれを検出する方法はないでしょうか。
特定のアプリケーションの起動を一時的に抑止させるようなことがしたいです。

監視するアプリケーションはユーザーがウインドウなどでダブルクリックで
起動した物だけで結構ですが、何かいい方法はないでしょうか?
>>150
だったら.NETFrameworkスレ立ててよ
ニヤニヤ
>>151
CreateProcessをフックするとか。
155デフォルトの名無しさん:03/08/11 20:11
>>154
他アプリのAPI関数の呼び出しをフックすることが出来るとでも??
>>155
出来るよ。
>>149
使ったことないけどGetGuiResourcesなんてどうよ?
>>155-156
ってゆーかNorton Anti VirusはWin9x/MEでは正にそういうことやってるらしい。
>>157
憶測でしゃべんな
EDITBOXの背景にBITMAPを貼るにはどうしたらいいですか?
161デフォルトの名無しさん:03/08/11 23:56
>>156
全く情報が見つからないんですが
やっぱり荒技?
162_:03/08/11 23:56
>>161
「Advanced Windows」でも買えばええんやなかろうか
164デフォルトの名無しさん:03/08/12 00:10
>>163
Windows2000AdvancedServerのこと?
>>164
すいません質問です

コマンドで
ftp -s:ftpcmd.txt>>ftplog.txt
とやっているのと同じことをプログラムから動作させたいのですがうまくいきません

ちなみにftpcmd.txtの内容は
open ****** <--サーバアドレス
*******   <--ユーザー名
********  <--パスワード
ascii
put ******  <--アップするファイル
bye
です

プログラムは
ShellExecute( NULL, "open", "ftp.exe", "-s:ftpcmd.txt>>ftplog.txt", NULL, SW_SHOWNORMAL);
でうまくいくと思ったんですが…

戻り値は32より大きな値が帰ってきているので関数自体は成功しているようです…

どなたかご教授お願いします
>>166
ヒントだけ。
リダイレクトを処理しているのは cmd.exe や command.com です。
168デフォルトの名無しさん:03/08/12 03:31
%COMSPEC%
169166:03/08/12 04:08
あ、リダイレクトはftp.exeの機能じゃないからあそこに記述しても意味がないですね
そりゃそうだ…
ご指摘ありがとうございます
170非常に抽象的:03/08/12 13:25
>>149
あらかじめオブジェクト生成・破棄をラッピングしておいてそれ以外の生成・破棄を行わないようにしておく。
>>158
ってゆーかウィルスは正にそういうことやってるらしい。
あとデバッガの類もか。

>>161
ぐぐってみたらこんなの出てきた。

ttp://f4.aaacafe.ne.jp/~madprog/memo/200302.html#08_t2
ttp://www.codeproject.com/dll/hookimport.asp
ttp://www.naughter.com/hookimportfunction.html

>>169
まだ微妙に判ってない悪寒。
他のスレッドが作り出したウインドウがアクティブかどうかを
調べるにはどうすれば良いでしょうか?
GetActiveWindow()の場合、他のアプリではだめで
自分側の一番アクティブなハンドルを返して来てしまいます

相手側のウインドウ ハンドルは、FindWindowで分かっているのですが
簡単に一番アクティブかどうか知る方法はないでしょうか?
173172:03/08/12 17:17
すいません、難しくてもありましたら教えてください
>>172
いっそのこと自分でアクティブにしてしまうというのはどうか。
>>172
GetWindowInfoでどう?
GetForegroundWindow ?
>>174
そうですね、その方が簡単で良いのかも知れないです
それにはGetForegroundWindow、SetForegroundWindowが良さそうなのですが
これは優先度が高いようで、アプリにかなり負担があります
出来れば負荷をかけないよう調べたいのですが
Win98/NT4.0SP3以降にはGetGUIThreadInfoとかいうのもあるが
>>177
> それにはGetForegroundWindow、SetForegroundWindowが良さそうなのですが
> これは優先度が高いようで、アプリにかなり負担があります
> 出来れば負荷をかけないよう調べたいのですが

初耳だな。どこにそんなこと書いてあった?
もしかしてこれ?
>The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads.
いや、まさかね
>>179
SetActiveWindowの所にSetForegroundWindowは強制的にって
なっていたのでそう思いました
出来れば、自然にアクティブになるのを待っていたかったので

ありがとうございます、GetGUIThreadInfoは難しそうなので
GetForegroundWindowでやってみたいと思います
ダイアログのエディットコントロールを自動で
入力状態にするにはどうすれば良いでしょうか?
>>182
入力状態とはなんぞや
フォーカス・・・か?
>>184
そうです、DOSで言うとプロンプト上で点滅状態に
自動でしたいんですけど出来ますか?
>>185
SetFocus()
187デフォルトの名無しさん:03/08/12 21:59
>>182
http://black.sakura.ne.jp/~third/system/winapi/win86.html
ここに書いてあるが、ダイアログ開始時にSetFocus()を使うなら、
WM_INITDIALOG の返り値をFALSEにする。
TRUEにすると、SetFocus()は無視されて、Tabストップのある一番
最初のコントロールにフォーカスが行く。

188デフォルトの名無しさん:03/08/13 02:15
矩形を描画したいのですが、例えば線幅が5のとき
線が矩形内にぴったり収まるようにしたいのですが
いいAPIとかあるのでしょうか?
計算してRectangleするしかないでしょうか?
>>188
PS_INSIDEFRAMEスタイルでCreatePen()
>>188
CreatePen(PS_INSIDEFRAME
191188:03/08/13 02:49
>>189-190
できますた!
いつも助けてもらって
ありがとうございます。m(__)m
192185:03/08/13 05:57
>>186,>>187
ありがとうございます m(_)m
バッチリできました
193デフォルトの名無しさん:03/08/13 23:10
winxp VB6
今wininetで簡単なブラウザ作ってるんですけど

hHttpRequest = HttpOpenRequest( _
hHttpSession, _
"GET", _
0, _
"HTTP/1.0", _
"http://www.yahoo.com/", _
vbNullString, _
0, _
0)

でhHttpRequestがemptyだよってエラーが出ます(´・ω・`)ショボーン
どうしたらいいっすかね?
どうしようもないね。
195デフォルトの名無しさん:03/08/14 00:15
>>194
そうっすか。どうしようもない質問なのかどうしようもない症状なのかどっちなんすかね?
それすらもわからないと手が出ない・・・
>>195 夏厨だと思われ
197デフォルトの名無しさん:03/08/14 00:24
>>196
もしかしてスレ違い?
198v:03/08/14 00:26
長瀬愛、白石ひより、かたせ美優から
なつかしのAV女優まで勢揃い。
セーラー服シリーズも大好評!
モロみえだから無料ムービー見にきてよ。
http://www.ncdonald.com/
199無料動画直リン:03/08/14 00:29
気を取り直して、次の方どうぞ↓
201デフォルトの名無しさん:03/08/14 09:54
↑おまえがな
202↑↑↑↑↑↑↑↑:03/08/14 09:58
おまえがな
娘にオナニーみられてしまった
氏ねw
205デフォルトの名無しさん:03/08/14 13:15
↑おまえがな
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
この後に
CloseHandle(hStdOut);
の必要はありますか?
その後、決して使わないのならいいんじゃない?
「決して使わない」にはprintfとかも含まれることに注意
209デフォルトの名無しさん:03/08/15 12:35
質問お願いします。市販品では、子モードレスダイアログ操作中でも
メインウィンドウのフォーカスは、失われないものが良くあります。

円滑な操作に必須なので、私もとりあえず、子モードレスダイアログの
操作中以外は、即座にメインウィンドウにフォーカスを移すようにしてみました。

しかし、これではメインウィンドウのタイトルが、灰色になったり元に戻ったりと
点滅してしまい、落ち着きませんでした(市販品は微動だにしません)。

綺麗に実装する方法を、教えていただければ幸いです。
アクティブウィンドウが2つになるわけないし
自分でウィンドウ描くしかないでしょ
ダイアログバーでないの
ツールウィンドウとも言う
213209:03/08/15 13:17
皆さんレスありがとうございます!

>>210
大体、クラスがダイアログだったのですが、
仰るとおり、自前描画してるのもいくつかありますね。

>>211-212
まさにこれみたいです。感謝感激。ダイアログの
スタイル変えただけで簡単に実現できました…よかったよかった。

なるほど…だから市販品子ウィンドウのタイトルは、どれも後付けだったのか…。
214keiko:03/08/15 13:49
例えばメモ帳のエディット コントロールを横取りしてサブクラス化かなにかして(意味不明でごめん)、秀丸みたいに改行記号とかタブ記号を表示できるようにしたいです。
そうゆうことって可能ですか? 自分でメモ帳を作るのではなくて、既存のアプリな内のコントロールに干渉したいのです。OE メール エディタとかエクセルのセル内に改行記号をひょ時させてみたいのですが・・・
ウィンドウタイトルを変えることはできたけれど・・
可能です
でも、あなたには無理。
だって、あなたは
妖怪人間♪
>>218
つまらんことをいうのはYouかい?
なにこのスレ(AA略
221山崎 渉:03/08/15 15:11
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
222keiko:03/08/15 15:37
言葉足らずですみません。
ヒントやサンプルなどをおしえていただけると幸いです。よろしくお願いします
GetDCして描くとか
ちょっとヒントやサンプルが貰えれば実現できるほど簡単な事では
無いと思うんだが、いかがなものか?
225206:03/08/15 20:46
それでは、質問を少し変えて聞きたいのですが、
GetStdHandle()は対象のカーネルオブジェクトの
参照数を変更(1ふやす)しますか?
226デフォルトの名無しさん:03/08/16 07:09
age
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)

(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
--------------------------------------------------------------
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)
--------------------------------------------------------------
228デフォルトの名無しさん:03/08/16 19:54
ボタンやチェックボックス、ラジオボタンなんかを押したときに出てくる、
憎々しいあの点線枠を消す方法ってありますか?

小さいコントロールとかだと、文字見えづらくなり邪魔で邪魔で
ぜひともご教授を
(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)
>>228
あれがないとキーボードで操作するのに困るんだが
どうしてもと言うなら、オーナードローボタンにして何もかも自分で描く。
サブクラス化してWM_SETFOCUSを無視するという手も。
だが消さないで欲しい。理由は>>230と同じ。
>>230
それは面倒なのでカスタムドロー推奨。

やはり同じ理由によりフォーカス時は差別化希望。
色を変えるとか。
233228:03/08/16 21:44
>>230-232
レスありがとうございます。皆さんの操作性に対する配慮には頭が下がる思いです

最初からこう訊けば良かったのですが、ペイントの左にあるような、
ツール選択のボタンみたいなのを作りたくて…
見栄えのため点線枠ではなく、ボタンのへこみのみでFocusしたかったんです
マウス主体の、簡単なグラフィックエディタなので、お見逃しを…

早速試してみようと思います、感謝です
234デフォルトの名無しさん:03/08/17 03:24
ディスクの遅延書き込みを DeviceIoControlでフラッシュしたいんですけど...

9xでは Interrupt 21h Function 710Dh(Flushes file system buffers and caches)
を使えばいけそうなんですが、NTでそれに相当する FSCTL_〜 は無いのでしょうか?
フラッシュするにはヴォリュームのロック/アンロックを行うしかない?
>>234
NT,2k,XPは直接デバイスに触ることはできない。
236あひゃ:03/08/17 10:33
外部アプリケーションが使用しているメモリの内容を書き換えたいと
思っています.市販ゲームの改造が目的です.
ゲームが使用しているメモリ空間からnバイトのバイナリデータ列を
検索してヒットするすべてのアドレスを調べたいのですが,
ヒープ領域でのアドレスを調べることができなくて悩んでいます.

今やってる方法は,ゲームを起動した状態でプロセスIDを取得し,
それをOpenProcess()で開き,ReadProceccMemory()を使って
ある程度のブロックごとに読み取り,memcmpで検索したいデータ列と
比較して下のアドレスから順番にアクセスしています.
ゲームを何度起動しても下からある程度までのアドレスは毎回同じで,
そこまではアクセスも順調なのですが,ある程度上に来ると
アクセスできなくなり,さらにゲームもフリーズしてしまいます.

プロセスメモリエディタ系で有名なExStandやねこまんま等で
そのゲームのプロセスを開いてみると,ヒープ領域のアドレスが
飛び飛びで存在しており,間にアクセスできないアドレスが存在しています.
上記の方法で下から順番にアクセスしていくと,そのアドレスにどうしても
途中でぶち当たってしまいます.単ににReadProcessMemory()が失敗して
返ってくるだけなら無視してどんどんアクセスしていけばいいと思うの
ですが,その時にゲームも止まってしまいます.

PC環境が変わるとアドレスが変わってしまいます.環境の違いにも
対応したいので,下からデータを検索していって,アクセス不可能な
領域があれば,次にアクセスできる領域まで飛んで検索を続行する
という処理を行いたいです.そのために,APIを使って
外部プロセスのヒープ領域のアドレス範囲を取得するといったことは
できないでしょうか.
プロセスメモリエディタなどはどういう処理をしているんでしょうか.
Heap32ListFirst
2387:03/08/17 11:06
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
 ☆★ 無修正DVD★☆なら 新宿歌舞伎町直送 ☆★

人気爆発新作ベスト9入荷
  堤さやか引退特集 憂木瞳 プロジェクトX No8 ベイビーフェイスをやっちまえ
 白石ひより・愛葉るび SNAPSHOT 地下映像陵辱援交 すぎはら美里痴女教師
 店頭販売の売れ筋のみ厳選してみました 安心の後払い
     http://book-i.net/moromoro/
   白石ひとみ 小森詩 山田まり 長瀬愛
@@ 及川奈央 レジェンド @@ 堤さやか 東京バーチャル 依然大好評
    
  サンプル画像充実  見る価値あり  最高画質
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 
>>234
真っ正直な方法じゃ無理。

これでも使っとけ。ほれ。
ttp://www.sysinternals.com/ntw2k/source/misc.shtml#Sync
240234:03/08/17 19:40
>>239
どうもです。そのページもチェック済みでした。がそのツールはソースが無いんで
すよね。惜しい。
DeviceIoControlで FSCTL_(UN)LOCK_VOLUME 使って一応できたんですが、やっぱ
これしかないのかな。

winioctl.h 眺めたら FSCTL_INVALIDATE_VOLUMEなんていう怪しいのがあったけど
どこにも情報がない(´・ω・`)
241236:03/08/17 19:57
>>237
ありがとうございます
ただツールヘルプ関数はNT系OSで使えないようなのですが
その場合はどうしたらいいでしょう
>Heap32ListFirst
>included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95

>CreateToolhelp32Snapshot
>Included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95.

MSDNもずいぶん非道い嘘を付くんだな。
XP Pro の kernel32.dll の中には
Dependency Walker で見る限りは
Heap32ListFirst,CreateToolhelp32Snapshot
共に入ってるんだが…
244236:03/08/18 06:09
>>242-243
すいません
MSDNの対応情報には確かに書いてあるんですが
どこかのページでNT系OSでツールヘルプ関数を使うと不具合があるため
psapiのEnumProcess等を使うとか書いてあったので

Heap32ListFirst/Nextを用いてやってみます
ありがとうございました
お勧めの書籍教えてください
>>245
書店に行って片っ端から立ち読み汁!重複するトピックが多分重要な部分だ。
その重要そうな部分を一番分かりやすくかつ深く書いてる本を買え。大切な
ことはその一冊で満足するなってことだ。買った本を読み終わったら上に書いた
ことを何度か繰り返せ。最初の印象とはずい分違っているはずだ。それは君が
成長したことに他ならない。健闘を祈る。
>244
>どこかのページでNT系OSでツールヘルプ関数を使うと不具合があるため
>psapiのEnumProcess等を使う

たとえば、http://www.galliver.co.jp/writing/msdn/msdn15/
ここに、似たようなことが書いてあるが、使えないのは「NT4.0」であり
XPや2Kも含む「NT系OS」ではない。そのあたりを勘違いしていた?
248236:03/08/19 08:48
>>247
まさにその通りです
自分の見たページにもNTとしか書いてなかったんですが
つい2000やXPも含めて考えていました
NT4.0を単にNTと表記されると混乱の元だよな。
250デフォルトの名無しさん:03/08/19 15:30
「横書きテキスト+任意の"横幅"を持つアイコン画像」
と、言うデータを、リストとして表示したいのですが、
適当なコモンコントロールや、方法を教えて頂けないでしょうか。

アイコン付きリストビューが、最適かと思っていたのですが、
これはアイコンサイズが16x16(32x32)で固定のようで…無念です。
何故オーナードローを使いませんか。
252Windows GDIでの質問です:03/08/19 15:48
反転する線を描きたいのですが、どうすればいいでしょうか?

例えば、ある画像にRGB(255,255,25)で線を描くと、
白ではなく、元の画像とXORされる線を描きたいのです。
どなたか教えてください
253250:03/08/19 15:53
>>251
いやぁ、このくらいなら、既存のものでチャキチャキ
終わらせたかったなと<(*´Д`)

オーナードローしかないですか…レスサンクスです。
>>252 SetROP2(hdc, R2_XORPEN)
255252:03/08/19 16:02
>>254
わーい、出来ましたー
ありがとですよ!!!
何故カスタムドローを使いませんか。
何故ケアルドローを使いませんか。
子ウインドウは親ウインドウの終了を知ることは出来ますか?
>>258
子供も道連れになるのでわかります。
それは子ウィンドウにもWM_DESTROYが送られるという意味ですか?
261デフォルトの名無しさん:03/08/20 11:09
ShellExecuteで起動したアプリケーションをPostMessage等で終了させる方法を教えて下さい。
262_:03/08/20 11:11
263_:03/08/20 11:16
264デフォルトの名無しさん:03/08/20 18:23
CreatDCで作成したプリンタのデバイスコンテキストにTextOutで文字を描画して
BitBltでウインドウのデバイスコンテキストに転送して印刷プレビューを
ウインドウに表示させようとしているのですが表示されません。
手順を間違えてるいるのでしょうか?教えて下さい。
プリンタのデバイスコンテキストからは転送できない。
猫でも分かるプログラミングSDK編を勉強しているのですが
メニューを作る際、resource.rc、resource.hに記述して
コンパイルすると「.Debug/resource.resが開けません」
となってしまいます。これは何が原因なのでしょうか?
そのディレクトリが無いからじゃないか?
268デフォルトの名無しさん:03/08/20 23:55
Win32 APIでキーボードやマウスの動きを自動化するプログラムを
作りたいのですが、どのようにすればいいのでしょうか?
いえ、フォルダもファイルも存在しています
>>266
プロジェクトにリソースファイルを加えてないとかw
いえ、SourceFilisの下に確に入っています
Filesですね。
あれ?ワークスペースを開き直したら普通に出来ました。お騒がせしました。
>>268
かなり勉強しないと無理臭い
勉強じゃないならば、FreeMacroってソフトを使ったら?
275デフォルトの名無しさん:03/08/21 12:42
CreateFile(...)で作成したファイルの途中以降のデータを切り捨てる方法を教えてください。
先頭から途中までのデータを新しいファイルに書き込むってのは無しの方向で。

SetFilePointer(hFile, 0x9613E, NULL, FILE_BEGIN);
CloseHandle(hFile);
これで0x9613E〜EOFまで切捨てられるかと思ってた。
276名無し@沢村:03/08/21 12:50
>>275
SetEndOfFile()
>>275
SetEndOfFile

関係ないがファイルマッピングでファイルサイズ伸張をバイト単位で綺麗に制御する方法を思いつかない
278275:03/08/21 13:00
>>276-277
ありがd。
しかしヘルプのCreateFileの所にリンクくらい張っておいて欲しいな。
SetEndOfFileにはCreateFileのリンクあるのにさ・・・。
>>278
SetFilePointerやWriteFileのとこにはリンク張ってあるし・・・

CreateFileで扱えるオブジェクトはファイルだけじゃないからなー

280268:03/08/21 22:24
>>274
むー、そんなに難しいことなんですか?ちょっと考えが甘かったかな。
かなり趣味の領域なんですが、キーボードやマウス操作の自動化って
かなり面白そうだし実用性あるなーと思います。
やっぱりマクロじゃなくてプログラミングでやりたいですねー。
281 :03/08/22 00:55
CSVファイルの読み込み・編集・保存等をしたいのですが参考になるHPってありますか?
またエクセルのセルのようなものを作ってそこに読み込ませたいのですが、どのコントロールを
使えばいいのでしょうか? VC++6.0使ってます
どなたか教えてくださいませm(_ _)m
>>280
まずはフリーマクロというソフトを使ってみてください。難しいことは一切なし。非常に簡単。
どうしてでも気に入らなければプログラミングで。

やり方が推測できないようならばゼロから勉強して下さい
>>2の猫でもわかる〜を読んで
>>268はキーボードやマウス操作を自動化したいんでなくて
キーボードやマウス操作の自動化するプログラムを組んでみたいって事だろ?
まあ他のソフトがどんな挙動してるか調べるにはFreeMacro使ってみて損はないけどな。

つうかそんなに難しくないと思うけどな。
>>283
質問している内容から、質問者にはかなりハードルが高そうですね
とりあえずJournalPlaybackとか挙げておけば?
誰も触ってないのにキーボードがカタカタタイプされたり、マウスが移動しているとすると、
既にホラーだと思うのだが
うちのマウスなら勝手に動くぞ
>>287
光学マウスとかで、カーソルが勝手に動くことがあるみたいなオチ?
マウスを掴もうとすると、嫌がって逃げたり
290デフォルトの名無しさん:03/08/22 14:22
_beginthreadex()の戻り値をHANDLEにキャストして
WaitForXXX()系のAPIに渡す事って正当な行為なんですか?

そんな事が出来るみたいな記事をどっかのHPで見たのでやってみたんですが、
スレッドハンドルがシグナル状態になってもWaitForSingleObject()が制御返してくれません。
>>289
手を洗え
292290:03/08/22 14:38
_beginthreadex()の戻り値でWaitForSingleObject()使えるみたい。
ヘルプに書いてあった。

んじゃ下のコードでWaitForSingleObject()が制御を返してくれないのはなぜ?

hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadEntry, (void*)this, CREATE_SUSPENDED, &uiThreadID);
SetEvent(hThread);
WaitForSingleObject(hThread, INFINITE);
>SetEvent(hThread);
これは何?
294290:03/08/22 15:09
>>293
SetEvent(hThread);でハンドルをシグナル状態にして、
WaitForSingleObject()がすぐに制御を返すかのテスト。
でもこれCreateEvent()で作成したハンドルでないとダメなんかね。
SetEvent が対応できるハンドルは、イベントのハンドルだけ。
すみません。
GetGlyphOutlineでは下線や打消し線は無視されるのでしょうか?
CreateFileを使うと
2000,XPだと正常にファイルができるんですが
Meだとファイルができません
使えないんでしょうか?
そうなっているんなら、そうだろ。
そんな修飾付きのアウトライン返されても困ると思うがね。
>>297
Windows9xでは使えない引数使ってるだろ
>>281
> どのコントロールを使えばいいのでしょうか?

はぁ ? ほんとに VC++6.0使ってるの ?
VB の間違いとか言う落ちじゃないよね ?

まあどちらにしてもスレ違いだよ。
301281:03/08/23 01:55
>>300
VBだとそういうのがあるってのはわかってるんですが、VCでやろうと思ってるんですよ

スレ違いですか?だったらスミマセン
一応APIに関することだと思ったのですが・・・
>>301
> 一応APIに関することだと思ったのですが・・・

マジでか ?

> CSVファイルの読み込み・編集・保存等をしたいのですが参考になるHPってありますか?
ReadCSVFile(), EditCSVFile(), SaveCSVFile() とかの API があるとでも思ってんのか ?
CSV ファイルと言ってもいろいろバリエーションがあるのは知ってるのか ?
(話の流れから、エクセル互換か ?)

またMFC も使わずに...
> またエクセルのセルのようなものを作ってそこに読み込ませたいのですが、どのコントロールを
と言うことをしたい漢なのか ?
だったらその「エクセルのセルのようなもの」ってどういうものかを説明すれば、やさしいお兄様方が適切な API を教えてくれるかもしれない。
ただし、やりたいことによるけどそれなりのコード量になると思うよ。
VB6使ってます。Textout()でPictureBoxの上に文字列を
表示してるんですが、その文字列ににアンチエイリアスを
かけて出力する方法が分かりません(;´Д`)

検索するとGetGlyphOutline()を使えば出来ると見かけますが、
全然使い方がわからず困ってます。GetGlyphOutline()以外で
実現する方法があるなら、何方かご教授頂ければ幸いです。
>>303
ぐぐればGetGlyphOutline()の説明なんていくらでも出てくる。
GetGlyphOutline()以外の実装としては文字をグラフィックとして扱えば、
いくらでも方法はあると思う。
一番簡単なのは大きめのフォントで描画して縮小だな。
305デフォルトの名無しさん:03/08/23 12:07
DragQueryFile()でウィンドウに対しドロップされたファイルの個数とそれぞれのフルパスを手に入れることが出来るのですが、
どこからドロップされたのかを知る術が分かりません。

c:\hoge\hage\ というディレクトリ構成があると仮定して、
hage内のファイルをドロップした場合におけるhageを検出したいのです。
>>305
フルパスが分かれば、
どこからドロップされたか分かりそうなもんだが・・・
307305:03/08/23 12:20
ファイルがドロップされた場合は親ディレクトリがドラッグ位置だが、
ディレクトリがドロップされた場合はどこまでさかのぼればいいのだ?
あ、これも親ディレクトリでいいのか?
検索からドラッグされる可能性はあるな
>>303
CreateFontするときにANTIALIASED_QUALITYを指定するだけ。
http://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_createfont.htm
310305:03/08/23 12:43
>>308
新たな問題発覚(;´Д`)
でもWinRARだと検索からのドロップはディレクトリ無視して圧縮してるね。
そんな方向で対処します。
エディットコントロールの文字列を変数に代入するのはどうしたらいいでしょうか。
がいしゅつであればアドレス出してください。
>>311
GetWindowText() か WM_GETTEXT
313268:03/08/23 14:23
一応Win32 APIの「SetCursorPos」を使ってマウスカーソルの移動は
できるようになりました。
マウスのクリックやキーボードの制御は「SendInput」を使えば
いいのでしょうか?

>>282
フリーマクロちょっと使ってみました。とても参考になりました。
314281:03/08/23 14:47
>>302
なんか的外れな質問してるみたいでスミマセン
始めて間もないので実はよくわかってないとこがあるんですよ・・・今猫で勉強中です
じゃあやるなって言われそうですが、やらなきゃいけないもので・・・

>CSV ファイルと言ってもいろいろバリエーションがあるのは知ってるのか ?
エクセル互換のカンマ区切りのCSVファイルと思ってたんですが、ほかにもあるのでしょうか?

ttp://up.isp.2ch.net/up/a31622ee5486.jpg
↑はVBで作ってあるのですが、Cでこんな感じにしたいんですよ
無理ですかね?
>>314
無理ではないよ。
>>314
やれやれはっきり言わないとわからないみたいだな...

・CSV を扱う API なんかない。
・Excel みたいなセルを扱うのは最終的には API を使うだろうが、普通は直接 API なんか呼ばない。

∴ スレ違い。

VC 使ってるんなら、VC のスレに行った方が良いよ。

> エクセル互換のカンマ区切りのCSVファイルと思ってたんですが、ほかにもあるのでしょうか?

データ中の改行の扱いはどうするとか、細かいことを言い出すときりがない。
317311:03/08/23 15:37
>>312
ありがとうございますぅ
318311:03/08/23 15:39
GetWindowText()はどのライブラリの関数ですか?
user32.libでねーの。実体はCOMCTL32.DLLにあるみたいだが。
320281:03/08/23 17:01
VCスレ逝って来ます
お騒がせしました&ありがとうございました
321 :03/08/24 07:35
http://home.att.ne.jp/yellow/town/rockm.htm
のようなウインドウズの操作を自動化するツールを作りたいのですが、
MSDNなどを見てもマウスとキーボードの情報を送信する関数が分かりません。
SetCursorPosでマウスの位置は動かせることがわかったのですが、
クリックとキーボードの情報を出す方法がわかりません。
説明のあるページか、関数名をおしえてください
SendInput
>>321
mouse_event、keybd_event
324デフォルトの名無しさん:03/08/25 00:50
ResumeThread()の返り値が -1で、GetLastError()が 0ってどういうことです?
>>324
テストしてみたがスレッド終了時とか
326325:03/08/25 01:05
おっと
ERROR_CALL_NOT_IMPLEMENTEDが返ってきていた
327324:03/08/25 01:49
MSDNには「戻り値が 0 の場合、指定したスレッドが中断されていなかった
ことを示します」と書いてあるが、中断していないスレッドを ResumeThread
すると0ではなく-1が返って GetLastError=0になるっぽいです。

MSDN間違ってる? Win98なんだけど、NTと9xで違うのだろうか...?
328 :03/08/25 06:09
>>322
>>323

問題解決しました。感謝です。
329デフォルトの名無しさん:03/08/25 11:17
GetStdHandleで取得したハンドルを最後にCloseHandleする必要はありますか?
MSのサンプルでCloseHandleしているところがあってその通りに実行するとエラーが発生します。

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q190/3/51.asp&NoWebContent=1
330デフォルトの名無しさん:03/08/25 11:28
メール受信日付で+900とか+400とかの日時の計算方法と種類を教えて下さい。
>>330
まず中学校を修了して下さい。
333デフォルトの名無しさん:03/08/25 13:38
いや+400とかの意味つうか時間になんぼ足すとかって書いてるとこ知りたい
何故RFCを読みませんか。
RFC厨は逝ってください
RFCすら読めない厨は逝ってください。
RFCしか言えない厨は消えて下さい。
RFC知らない厨は死んで下さい。
339デフォルトの名無しさん:03/08/25 14:46
ふぁみこんのなかまだろ
340デフォルトの名無しさん:03/08/25 15:01
Real Family Computer
初代ファミコンはTVと接続するときにRFC使ってた
342デフォルトの名無しさん:03/08/25 15:14
つか>>333を教えてよ
>>342
板違いなので余所へいけ。
344デフォルトの名無しさん:03/08/26 03:43
キーボード入力で[D],[4],[→]の同時押しを検出しようと思い、
GetKeyboardState関数、GetAsyncKeyState関数を用いてプログラムを作成したのですが、他の3つのキーの同時押しは検出できるのですが、何故だか[D],[4],[→]の同時押しが検出できません。
これは仕様なんでしょうか?
何方か[D],[4],[→]の同時押しの検出方法をお教えください。
環境はVC++6.0,Win2000です。
よろしくお願いします。
AT互換機のキーボードのハードウェア的な仕様なのでどーにもなりません。
コストダウンでどんどん安物を追求していった結果です。
シフトキー以外の同時押しは保証されないと思ってください
346 :03/08/26 06:39
>>344
PCでgeme作る時非常に困るんだよね、この仕様
347デフォルトの名無しさん:03/08/26 09:54
自分が答えられないと板違いってほざく厨房がいるスレはここですね?
>>347
ん?何を教えて欲しいの?
板違いじゃなくてスレ違いだよな
しかしもう>>334が答えてるじゃないか
答えてもらえないと煽る厨房がいるスレは(
便乗して煽る厨房がいるスレはここです!
352デフォルトの名無しさん:03/08/26 11:16
コマンドラインから(自作のアプリからでもいいのですが)
myhelp.chmを検索単語 myword で開くにはどうすればいいですか?
>>352
板違いなので余所へいけ。
>>353
板違いなので余所へいけ。
>>354
板違いなので余所へいけ。
>>352
一応、HtmlHelp API がある。使ったことないからよくしらない。

>>355
板違いなので余所へいけ。
>>356
板違いなので余所へいけ。
>>359
基地外は余所へいけ
えー、そんなー
360デフォルトの名無しさん:03/08/26 19:24
>>352-359
板違いなので余所へいけ。
板違いなら俺んとこへ来い!
>>360とは腹違い
>>360とは穴兄弟
>>361
俺も違うから心配すんな!
DialogBoxもMFC使わないでモーダルダイアログ?(WM_DESTROYまで処理を返さない方)を表示するにはどうやればいいんでしょうか?
モーダルにするウインドウ以外のウインドウのメッセージを全部カットするんでしょうか?
呼び出した関数の中にメッセージループ作ればいいんじゃねぇの?
後はフォーカスの制御も必要か。
>>365
オーナーウィンドウにEnableWindow(FALSE)して
ダイアログを閉じるときにEnableWindow(TRUE)で戻す。
368デフォルトの名無しさん:03/08/28 10:18
以下の手順で外部プロセスを終了するためにTerminateProcessを使っているのですが
うまくいきません。なにが悪いのでしょうか?

1.プロセスを列挙し終了させるプログラムのIDを取得する。
2.プロセスIDからプロセスハンドルを取得する。
3.TerminateProcessを呼び出す(TerminateProcess(ProcessHandle, 0&))
4.プロセスハンドルクローズ

言語:VB6
OS :Win2000
369デフォルトの名無しさん:03/08/28 10:32
特定のウィンドウのHWNDを取得して,そのウィンドウに対して
使用不可(マウスでそのウィンドウをクリックしても何も反応しないようにする)
右上のペケボタンを使用不可にする
隠す(タスクバーからも消す)
表示する
はSendMessageでどのようなメッセージを送ればよいのですか?
教えてください
上から順に
EnableWindow
システムメニューから閉じるを削除
ShowWindow(SW_SHOW)
ShowWindow(SW_HIDE)
SendMessageを使うものなんか1つもないが
SW_SHOWとSW_HIDEが逆だった
EnableWindow関数の説明によれば
WM_CACELMODEとWM_ENABLE使えばいけるっぽい

ウィンドウを閉じずに、
タスクバーから消す方法は知らない

最初からタスクバーに表示しないウィンドウをつくるなら、
CreateWindowEXのスタイルで、
WS_EX_TOOLWINDOWを指定すれば良かったと
373デフォルトの名無しさん:03/08/28 11:08
>>370-371
ご親切にどうも
>システムメニューから閉じるを消去…
どういうことですか?(汗
374デフォルトの名無しさん:03/08/28 11:09
>>372
Thx!
375372:03/08/28 11:31
>>373
CreateWindowするときに、スタイルにWS_SYSMENUを付けない

註:WS_OVERLAPPEDWINDOW,WS_POPUPWINDOW はWS_SYSMENUを含んでいる

もしくは、
style =GetWindowLong(hWnd,GWL_STYLE);
style &= ~WS_SYSMENU;
SetWindowLong(hWnd,GWL_STYLE,style);
みたいな感じでいけたと
ただ、最小化ボタンと最大化ボタンも消えるけど
>>375
なるほどなるほど
ペケボタンは消すんじゃなくってただ単に押せなくなる(色が薄くなる)
だけでいいんですけどね…
ただまぁ自分のWindowをそうするんじゃないんで…たのWindowをいろいろ操作
したいのです
>>373
GetSystemMenuでコントロールメニューのハンドルを取得して
EnableMenuItemでIDがSC_CLOSEなメニュー項目を無効化
つーか少しは自分で調べてよ
378デフォルトの名無しさん:03/08/28 11:59
>>377
ごめんなさい,ちょっと甘えてました
みなさんどうもありがとう!
379デフォルトの名無しさん:03/08/29 00:08
指定の exe 実行して、終わるまで待機 って API無いですか?
ShellExecuteだと、立ち上るけど、そのまま処理を続けるてるし。
ShellExecuteEx
ファイルを検索するのにFindFirstFileを使用しています。
Debugモードでは日本語を使用しているファイル名を指定でき、
ファイルを見つけることができます。
しかしReleaseでビルドしたものは全く日本語を受け付けてくれません。
原因は何が考えられるでしょうか。

環境 : VC++7.1,Win2KSP4
プロジェクトの設定
Release : スタティックライブラリでMFCを使用する。
Debug : 共有 DLL で MFC を使用する.
文字セット : マルチ バイト文字セットを使用する

問題と思われる個所のコード。
HANDLE dno;
TCHAR dir[MAX_PATH];
WIN32_FIND_DATA fil;
if ((dno = FindFirstFile(dir, &fil)) != INVALID_HANDLE_VALUE) {

よろしくお願いします・・・困ってます。
382381:03/08/29 01:27
すいません。sageてしまいました。改めてよろしくお願いします。
383381:03/08/29 02:03
申し訳ないのですが、他の個所に問題があったようで
FindFirstFileは関係なかったようです。
もう少し調べてから質問すべきでした。
お騒がせしました。
CreateThreadで作ったスレッドがまだ実行中に
CloseHandleしたら成功したんだけど、
これってどういうこと?
スレッドが終了次第、自動的にスレッドオブジェクトが破棄されるの?
それともやっぱりスレッドが終わってから再度CloseHandleしないといけないの?
ハンドルハ実体ニアラズ
386デフォルトの名無しさん:03/08/29 17:05
環境
OS:Windows98SE
コンパイラ:bcc5.5

ttp://www3.big.or.jp/~schaft/program/getopenf/getopenfC.html
上のページにあるサンプルをそのままコンパイルしたのですが上手くいきません。
コンパイルは出来るのですが、ファイルを開くダイアログは出てこないで
"キャンセルされました"のメッセージボックスが出て来るだけです。
最初に

#define _WIN32_WINNT 0x400
#define WINVER 0x400

を加えても上手くいきませんでした。
どう書けばいいのか教えて下さい。
387384:03/08/29 17:10
>>385
実体ってスレッド自体のこと?スレッドオブジェクトのこと?
>>386
WinMain にある
szFileName が初期化されて無いでち
389デフォルトの名無しさん:03/08/29 17:38
>388
ZeroMemoryで上手くいきました、有難うございます
390デフォルトの名無しさん:03/08/29 18:53
ウィンドウメッセージ

SC_MINIMIZEで最小化
SC_MAXIMIZEで最大化
元のサイズに戻すのは…SC_ZOOM?
ああSC_ZOOMとSC_MAXIMIZEって一緒だったんだっけ?
SC_RESTOREだけど、ウィンドウメッセージではないぞ。
392デフォルトの名無しさん:03/08/29 20:01
>>391
SendMessageじゃだめなのですか?
393デフォルトの名無しさん:03/08/29 20:22
OS2のdllはコールゲート呼び出す設計らしいけど
windowsのdllってコールゲート呼び出してるの?
>>392
SC_MINIMIZEなんかは、ウィンドウメッセージWM_SYSCOMMANDのパラメータ。
SendMessage(hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0)
395bees:03/08/29 23:02
指定したフォルダの中の全てのファイルパスを
拾得するにはどうしたらいいでしょうか?
396beep:03/08/29 23:04
書き忘れました、VC++6にてSDKでやっています
OSはXPです。
FindFirstFile / FindNextFile
399bees:03/08/29 23:11
>>397
>>398
ありがとうございました!397さんのでできそうです、
ググルも見てミマス!
>>393
Windowsはコールゲート使ってません。
int 20とかarplとか(Win9x)
int 2eとか(WinNT, WDM)
401デフォルトの名無しさん:03/08/30 11:36
>>400
さんくす
402デフォルトの名無しさん:03/08/30 13:29
>>394
Danke
403デフォルトの名無しさん:03/08/30 20:47
2重線を引きたいのですが、Penにはそういうのが
ないと思うのですがAPIとかあるのですか?
>>403
GDI+のPen::SetCompoundArray()ぐらいかな。
GDIにはない。たぶん。
405403:03/08/30 21:29
>>404
どうもです。
やはりですか。。。
GDIにはそんなのがあるのですね・
GDI使えないのでwidth5で引いて上からXORでwidth3で引いてみる
とかしてみますね。。。ありがとう。
406 :03/08/30 21:53
GDI+ってVC6で使えないよね?
初めて聞いたw
もうそろそろ乗り換えないといかんのかなぁ
>>406
いや、そんなこと全然ないぞ。ないはず。
GDI+は最新のプラットフォームSDKダウンロードしたら付いてなかったかなぁ?
単に>>406がGDI+もそれがVC6で使えることも知らないだけだ。
409デフォルトの名無しさん:03/08/31 16:00
 W2Kでフォルダをネットワーク経由でアクセス可能な共有状態にし、
そのフォルダのアクセス権からeveryoneを削除して、
Administoratorをフルアクセスで追加って事をしたいです。

バッチファイルでできそうな気がしたのですが、
net share、caclsでは、フォルダそのもののアクセス権を
変更するだけで、ネットワーク経由のアクセス権を変更
する事はできないようです。

適当なWin32APIがあればコマンドを自作してしまおうと思い、
こちらに書き込ませていただいてます。
ご存知でしたらアドバイスをお願いいたします。
>>409
自宅でMSDN参照できないので、あまり参考にもならないかも
知れませんが、レスついていないのでちょっと。

キーワード acl でぐぐってみて。で、検索されたAPIの仕様を
確認してみて。おそらく希望しているものが見つかると思う。

参考 ttp://www.cisnet.or.jp/home/tsuneoka/win32tech/10.html
APIENTRYとWINAPIって、何が違うの?
ググっても同じとしか書かれてないんだけど、
本当は何か違いがあるんじゃないの?
歴史的な理由とか?教えてプリーズ。
412デフォルトの名無しさん:03/09/02 00:35
ドライブのフォーマットを取得するAPIってありますか?
種別はGetDriveTypeとかなんとかで取れたんですが
FAT32かNTFSか、というのも判別したいんです。

おながいします。
(゚д゚)<GetVolumeInformation
414デフォルトの名無しさん:03/09/02 01:02
>>413
即レスありがとうございます。
逝けそうです。
415デフォルトの名無しさん:03/09/02 03:51
case WM_VSCROLL:
 switch (LOWORD(wParam))
 {
  case SB_THUMBTRACK:
   HIWORD(wParam);
 }
スクロールに関する質問なんですが、
HIWORD(wParam)では 0〜65535 の範囲でしか値は得られませんよね?
65536 以上ドラッグ操作でスクロールしたい場合はどうしたらいいのでしょうか?
416デフォルトの名無しさん:03/09/02 03:52
STRINGTABLE { IDS_A "あああ" }

 ↓

STRINGTABLE { IDS_A "いいいいい" }

コンパイル時にexeファイルに入れたリソースの内容を書き換えるようなことはできないでしょうか?
417415:03/09/02 04:19
ttp://www.asahi-net.or.jp/~uq7k-hrsm/vcdev2fr.htm
↑で解決いたしますた。
>415
MSDNに書いてある。
>Thus, an application can call GetScrollInfo while processing
>either the WM_HSCROLL or WM_VSCROLL messages to
>obtain 32-bit scroll-bar position data.
MessageBoxで表示されるアイコン(MB_ICONINFORMATIONとか、MB_ICONHAND等)は
自前で使えないでしょうか?何かヒントになる
APIがあれば教えて下さい。

>>419
LoadIcon
>>420
ありがとうございました。
422デフォルトの名無しさん:03/09/02 13:54
spoolデータの所有者を変更したいのですが。
何か方法ありませんか?
423デフォルトの名無しさん:03/09/02 15:30
StretchBlt()で直接デスクトップにBltしたいのですが、
なぜか画像に意図しない歪みが生じてしまいます。(下記URLがそのキャプです)
何がいけないのでしょうか?ご教授ください。
http://www.forgetmenot.jp/diary/img/1053829691/1054775553.jpg
久しぶりに蓮コラ見た
425デフォルトの名無しさん:03/09/02 15:35
>>423
そりゃあ乳首が蓮だからだよ。
426bees:03/09/02 16:56
これは引数に指定したフォルダの中のファイル数をカウントするつもりで作ったのですが
なぜか毎回二個増えてしまいます、だれか助けてくだちぃ。
例えば空のフォルダ指定してもなぜか二個になってしまいます。
隠しファイルは表示させてあるのでわかると思うんですが・・。
int Find(char *fDir)
{
        HANDLE hFind;
       WIN32_FIND_DATA fd;
       char Dir[256];
       int count = 0;

       if(fDir[strlen(fDir)-1] != '\\')
           return -1;

       wsprintf(Dir,"%s*.*",fDir);

       hFind = FindFirstFile(Dir, &fd);
       if(hFind == INVALID_HANDLE_VALUE)
           return -1;
       do
       {
           count++;
       } while(FindNextFile(hFind, &fd));

       FindClose(hFind);
       return count;
}

無関係ですがホットゾヌつかて見ました、はまりカケです。
fdの中身を確認してみれ。
.
..
の二つじゃねーの。
つーかデバッグしてフォルダ名見てみりゃいーじゃん。
カレントと親
430429:03/09/02 17:03
カレントじゃなくて自分自身
431bees:03/09/02 17:08
ぬぁ!フントでした!フォルダも検索されていたんですね
FILE_ATTRIBUTE_DIRECTORYで判別してみました。
>>427~>>430
ありがとう!
432デフォルトの名無しさん:03/09/02 21:12
Win32API と Win32SDK って何が違うの?
こんなの相手にすんな
まあまあ。
APIはプログラムを作るためのライブラリ関数。
SDKはプログラムを作る時の組み方。
つまり、比べる分野の地点で違う。
ここわ殺伐としたインターネットですね
API = Application Program Interface
あるソフトウェアの機能を他のプログラムから利用するための手続き。
Win32APIではほとんどがDLLからexportされた関数として提供されている。

SDK = Software Development Kit
ある環境で動作するソフトウェアを開発するのに必要なものの一式。
Windows SDKの場合C/C++用のヘッダ、DLLや、それをリンクするのに必要な
インポートライブラリ、各種ドキュメント、サンプルプログラム等が含まれている。
437デフォルトの名無しさん:03/09/02 23:51
デスクトップとか
フォルダでファイルがドラッグ開始された瞬間を取得するには、
どうすればいいですか?
>フォルダでファイルがドラッグ開始された瞬間
ボタンを押下した瞬間か移動しはじめた瞬間かどっちなんだ
439434(!432):03/09/03 00:00
勉強させてもらいました。
440デフォルトの名無しさん:03/09/03 00:09
>>410
ありがとうございました。
720個のフォルダを手動で共有化せずに済みそうです。
441デフォルトの名無しさん:03/09/03 00:13
>>438
どちらでもいいです。
あえて言うなら
移動した瞬間です。
>>441
Notify掛けとけば?
プログレスバーがクリックされたかどうか知りたいんですけど
どうすればいいんでしょうか?
>>443
サブクラス化してWM_LBUTTONDOWNを処理。
445デフォルトの名無しさん:03/09/03 12:35
拡張子関連付けの起動ができないURL(index.html#aaa 等)をブラウザで開きたいのですが、
ShellExecute(0, "open", BrowserPath, "", 0, SW_SHOW);
// BrowserPath = とりあえずエクスプローラへのパス
とすると、起動はできるのですが、実行するたびに新しいウインドウが起動してしまいます。

拡張子関連付けの場合、既に存在すれば使いまわされます。
一応、ぐぐってたら前スレの 29 にヒットしました
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html/29

つまり「既に存在するならそこで開いてほしい」のですが、どうしたら良いでしょうか?
446445:03/09/03 12:39
訂正です

X // BrowserPath = とりあえずエクスプローラへのパス
O // BrowserPath = とりあえず IE へのパス

前スレの 29
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
447kumazo:03/09/03 15:56
今、Winsockを使用しマルチプロセスサーバを作成しています。しかし、
親プロセスから子プロセスへのソケット値の継承方法がわかりません
(CreateProcess関数を使用しプロセスを生成しています)。
わかる方がいらっしゃいましたらご教授お願いします。
環境はVC++6.0 WINSOCKバージョンは1.1を使用しています。
また、スレッドは使用しないようにしたいと考えています。
DuplicateHandle
リフレッシュレートを変更する方法って
何かないですか?
UNIXではsetmonとかをsystem関数で呼び出してたんですが
その部分をWindowsで実現したいのです
450449:03/09/03 17:27
ごめんなさい
解決しました
451449:03/09/03 18:30
450は偽物です。
引き続き情報をお待ちしてます。
何でリフレッシュレートを変更したいわけ?
ChangeDisplaySettings
ChangeDisplaySettingsEx
454449:03/09/03 20:46
引き続き皆さんの情報をお待ちしてます。
お電話はこちらまで。
4400333
455デフォルトの名無しさん:03/09/03 22:35
Win32API関数の一覧が載っているページを知りたいのですが教えてください。
456デフォルトの名無しさん:03/09/03 22:35
>>455
死ね割れ厨
>>455
MSDN
>>455
教えてやってもいいが有料
459455:03/09/03 23:22
>>457
CDは持っているのですが、Win32APIだけが載っているページがあればなと。
ANSI-Cだとこういうページがあるのですが。
http://www.bohyoh.com/CandCPP/C/Library/index.html
また、検索する時一つ一つではこういうページにいけるのですが元のページが分かりません。
http://www.google.co.jp/search?q=cache:Fb-0krTmdfwJ:www.microsoft.com/japan/developer/library/jpwinpf/_win32_setconsoletextattribute.htm+SetConsoleTextAttribute&hl=ja&ie=UTF-8

>>458
お願いします。
461455:03/09/04 01:38
>>460
ありがとうございます。ただ、英語でページの使い方が分からないので、
いろいろいじってみます。
英語読めないのにプログラミングするなと小一時間
MSDN(SDK含む)は平易な英語だから辞書があれば中学生でも理解できると思う
要は簡単な英語を訳す努力もしないような奴はプログラミングをするなと(
465デフォルトの名無しさん:03/09/04 04:25
ウインドウ上のマウス位置を取得したいのですが、どうすればよいのでしょう。
GetConsolePosやlParamだと、スクリーンの上のを調べてしまいます。
ScreenToClient
Borlandのbcc55フリーコンパイラでWindowsプログラミングができるのでしょうか?
_mainのシンボルが未解決と出てしまいます( ´Д⊂ヽ
>>467
普通に可能だが。
何故そのエラーが出るのかといえばbccの使い方が理解できていないから。
>>467
タダで最強!フリーC/C++コンパイラ
http://pc2.2ch.net/test/read.cgi/tech/1035882599/
>>466
GetCursorで画面での位置を取得

ScreenToClientでウインドウでの位置に変換

でできました。ありがとうございました。
 Win2k/XPでは、CTRLを押しながら[シャットダウン...]を押すと
緊急時シャットダウンとなり、瞬時(1〜2秒)でウィンドウズが
シャットダウンします。
 これと同じ事をプログラムからAPIを呼び出して行いたいのですが
どのAPIを使えばよいのでしょうか?

 ExitWindowsEx( EWX_FORCE | EWX_SHUTDOWN , 0 );
 とやったらイケルかと思ったのですが、この場合、アプリなどは
強制終了されているようですが、Windows自体のシャットダウン
プロセス自体は通常通りでした。(「設定を保存中です」という
ダイアログが表示され、10秒程度終了処理を行ったあと電源が切れる)

(参考) Windows で緊急時シャットダウンを実行する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;279134
>>471
試していないのですが、EWX_FORCEIFHUNG が必要では?

参考:ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/exitwindowsex.asp
473471:03/09/04 14:50
>>472 ありがとうございます。
 EWX_FORCEIFHUNG は試してみました。
 これをつけると無条件にアプリのプロセスを終了するのではなく
応答無しのプロセスのみ強制終了するようになります。
 結果、EWX_FORCE のみのときに比べてシャットダウン処理時に
余計に時間がかかるようになります。
 この方が安全なのでしょうけど、いまやりたいのは即座に
シャットダウンさせたいのです。
MS Pゴシック 12pt の時のいろいろな文字列の実際に表示された時の幅を
取得したいのですが、どうすればいいのでしょうか?

いろいろ調べた結果
GetTextExtentPoint32
がぁゃιぃと踏んだのですが…
>>474
その通りだが。
476474:03/09/04 20:00
>475
Font 変更のところで詰まっていたへたれでして…
でも、検索したら猫に解説がありました(´・ω・`)
477474:03/09/04 21:28
HDC hdc = GetDC(NULL);
HFONT hFont = CreateFont(12, 0, 0, 0, 0, 0, 0, 0, SHIFTJIS_CHARSET, 0, 0, 0, 0, "MS Pゴシック");
SIZE size;
GetTextExtentPoint32(hdc, "e", 1, &size);
cout << "e" << size.cx << endl;
GetTextExtentPoint32(hdc, "g", 1, &size);
cout << "g" << size.cx << endl;

結果:
e6
g6

こういう結果が得られたのですが、実際に IE にて二つの文字を表示してみたところ
e のほうが 1 dot 大きいのですがなぜでしょうか?
IE が特殊なのん?
TextOut()やDrawText()でウインドウに出力したテキストを消去するにはどうすれば良いですか?
>>477
CreateFontの引数はピクセル単位だぞ。12ピクセル=9ポイント(WinXPデフォルト設定で)
>>478
背景色で塗りつぶす。もしくは背景の画像の該当部分をコピー。
>>477
hFontを使ってないように見えるけど…省略しただけ?
ふぉんとのことを言うと、SelectObjectしないとFontが変わらないよ。
江~~~~~~~~~~~~~~~~~~フォントォォ~~~?????????????????????????
>>483
5点
CreateIoCompletionPort()やらについて解説してるサイトってないッスか?
…MSDN以外ないッスよね…。
書籍でいいならAdvanced WindowsとかProgramming Windows2000とか当たってみたらどうだ?
英語のサイトなら多分あると思うが。
487デフォルトの名無しさん:03/09/05 00:20
DOSコマンドのnetstatのような自分のPCに接続している接続先の情報一覧
などを得ることはできないでしょうか?
>>487
GetTcpTable, GetUdpTable,

XP以降なら
AllocateAndGetTcpExTableFromStack,
AllocateAndGetUdpExTableFromStack
のほうがプロセスIDも取れて便利。
489デフォルトの名無しさん:03/09/05 00:38
文字列があって、あるサイズ(横幅)に収まるポイントが
ほしいのですが、ループで回して調べるしか
ないでしょうか?
>>489
意味がわからないが、たとえば

あいうえおかきくけこさしすせそ

あいうえおかき...

みたいなのを実装したいの?
491471:03/09/05 00:57
>>471 の件ですが、ExitWindowsExでは無理そうなので
SYSTEMプロセスをTerminateしてやろうと挑戦中です。

HANDLE hProc = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ | PROCESS_TERMINATE , false , <プロセスID> );
BOOL fStat = TerminateProcess( hProc , 0);

 システム系のプロセスを対象としたとき、PROCESS_TERMINATE を
つけるとOpenProcessが失敗するようです。
 SeDebugPrivilege を使うとなんでもありにあるようなので
これから試してみます。

[HOWTO] SeDebugPrivilege を使用して任意のプロセスへのハンドルを取得する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;JP131065

 
ちょっと前に同じような質問なかったっけ。
493489:03/09/05 01:13
>>490
いえ、エクセルの「縮小して全体表示」みたいなのが
ほしいです。。。
494471:03/09/05 01:27
なんとなく独り言モード
>>491 の SeDebugPrivilege を使う方法でほとんどのプロセスを
Terminate出来るようになりました。
 タスクマネージャーで「致命的なシステムプロセスです。」と
いわれて終了出来ないプロセスも終了できます。
 ただ肝心の「System」プロセス(PID=8)は終了できません。
 イメージ名に「.EXE」がついていないので、Idle Processの
ような仮想的なプロセスなのでしょうか。
 とりあえずいろいろプロセスを殺してみましたが、WINLOGON.EXEを
Terminateしたら、いきなり画面が黒くなりマシンがリブートしました。
 これか?と思いましたが、リブートしては目的に添わないし
もう一度試してみても再現性がありませんでした。がっかり
496デフォルトの名無しさん:03/09/05 04:41
質もの願いします
画面を持たないEXEモジュールで以下のことをしたいのですが。
1.エクセルを起動
2.オブジェクトを取得
3.値を配置
4.保存
5.エクセルを閉じずにオブジェクトを開放
6.人間の手で修正
7.(この間VBはエクセル終了まで待機)
8.人間の手で終了
9.エクセルの内容をDBに変更

で、
1は「ShellExecuteEX」
2は「GetObject」
7は「WaitForSingleObject」
を使って実現しようと考えました。

ところがいくつか問題がありまして、よろしければご指導ください。

1.「画面を持たないEXEモジュール」なので「ShellExecuteEX」のhwndに0を渡すと
  戻りの実行ファイルのハンドルが0で帰ってきて、「WaitForSingleObject」が機能しない。

2.ループでExcelの起動完了を検出してからGetObjectでオブジェクト変数を取得しに行くが
  既にエクセルが起動している場合はにうまく機能しない

よければご教授お願いします。
オンラインのMSDNの効率的な検索方法教えて。
普通にAPIの名前だけ入れてもうまく引っかからないことが多いので
とりあえずこんな感じでキーワードを並べるとだいぶましになるけど完全とはいえない。
ShellExecute site:www.microsoft.com プラットフォーム SDK

それにしても個人のサイトでAPIリファレンス載せてる人々は一体何を考えているんだろう?
検索精度が下がって激しく邪魔なんだけど。
あ,あの,Windows でハードウェアスクロールって
・・出来ないすよね,やっぱし・・
いえ,もういいっす・・すんませんっした・・
>>497
うまく検索できないのは、マイクロソフト(日本)のサイト自体
の問題。個人のサイトでAPIリファレンスを載せてる人は関係
ない。

そもそも全ての情報が日本語訳されている
わけではないので、
http://msdn.microsoft.com/
を使った方がいい。
500485:03/09/05 08:30
>>486
うーっし、Advanced Windows辺り見てみまっさー
501名無し@沢村:03/09/05 12:56
>>496
とりあえずWaitForSingleObjectにはHWNDを渡すのではなく
ShellExecuteExが返すプロセスハンドルを渡す。
CreateFontといえば、自分は将棋をwin32アプリで作っていて、駒の表示、
画面の部分クリアなんかをCreateFontでやっているが、エディタに書き込んでいる
時などにマウスで文字属性を変えられる所を行ったり来たりさせていると、
表示がバグる。いったん最小化させて、又元に戻しても、ばぐったままのが表示
される。あまり頻繁には使ってはいけないものなのかも。
CreateFontで画面の部分クリア?
意味わかりませんが。

っつーか、フォント作りすぎてリソース不足になっているだけか?
504デフォルトの名無しさん:03/09/05 14:15
>>501
レスありがとうございます。
プロセスハンドルを渡してますがその値(ハンドル)は常に0のようです。
おそらくShellExecuteExに渡すHWNDにトップウィンドウのハンドルを指定
すればいいと思うのですが、そこで操作の糸が切れました・・・・
505474:03/09/05 15:51
>481
コピペした時に誤って消してました(汗

>479
CreateFont(16, 0, 0, 0, 0, 0, 0, 0, SHIFTJIS_CHARSET, 0, 0, 0, 0, "MS Pゴシック");



e8
g7

の出力が得られました。どうやら成功のようです。
ありがとうございました。
>>504
ShellExecuteで得られるのってHINSTANCE にキャストされてるだけで、
実際のHINSTANCEとは違うんじゃなかった?

そういうのにはCreateProcess()ではないのかと。
507506:03/09/05 15:56
すまん。ShellExecuteExには hProcess があるのね。
508502:03/09/05 16:38
>>503
>CreateFontで画面の部分クリア? 意味わかりませんが。
消したい部分が30×100なら、CreateFontの引数をそのサイズにして
半角スペース1つを出力。

>っつーか、フォント作りすぎてリソース不足になっているだけか?
CreateFont→駒1枚表示→Deleteにしてたけどそれだとそうなる?
後、全部の駒を一度に表示する時(初期、再表示)は、同じ属性の表示
(上攻め、下攻めなど)は変更→全て表示→Deleteで表示する様にしたが
それでもダメだった。ただ、その時変更した後Deleteせずに再変更して、
終わりの時だけしかDeleteして無かったかも。
>>508
そういう用途ならExtTextOutのほうが便利だと思うが。
510502:03/09/05 17:05
>>509
始めて見たから、まだ使い方が分かんない。いろいろ試してみます。ありがとう。
http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_exttextout.htm
しかし、上のようなページに行く元のページはどこにあるのだろう。
ExtTextOutで矩形を塗りつぶす方法はMFCのCDC::FillSolidRectのソースが参考になる、
つーのも大概どうかと思うが。
素直に矩形で塗り潰せっと
ブラシとか作って矩形で塗りつぶすより、CDC::FillSolidRectみたいに
ExtTextOutでやったほうが、かな〜り速かった記憶が
しかもExtTextOutのほうが格段に手間かからんしな。
>>504
hProcessを得るときはSEE_MASK_NOCLOSEPROCESSフラグが必要だってさ。
あとウィンドウがないときはSEE_MASK_FLAG_DDEWAITフラグも付けろとかなんとか
書いてあるような。MSDN。英語自信なし。
517502:03/09/05 19:12
>>515
そのページは知っているのですが、選択できるものがいっぱいあって
使い方が分かりません。
Win32API一覧
 CreateFont
 ExtTextOut
 TextOut
 ...
windows.h構造体の型一覧
 POINT
 ...
こんな感じになってくれていればうれしいのですが。
知っている、使ったことがあるものでこつこつ作っていこうかな。
518496:03/09/05 20:25
>>506
>>516
レスありがとうございます。
SEE_MASK_NOCLOSEPROCESSはついてます。
SEE_MASK_FLAG_DDEWAITも試しにつけてみます。

板さえ出せばhwndは取得できるわけで、しょうがないから
「EXCEL起動中」板でも出して逃げちゃおうかなぁなどと考えています。

後はエクセルのファイルが起動した後、如何にオブジェクトを取得するかですが。
・・・・・これも厄介そうです。修行と思ってがんばります。

APIって難しいですねぇ(T−T)
>>518
というか、やりたいことからするとCOM使ったほうがよさげな気がするが。
520496:03/09/05 21:44
>>519
レスありがとうございます。
COMってなんですか?
521デフォルトの名無しさん:03/09/05 21:48
WNDCLASSとWNDCLASSEXはどう使い分ければよろしいのでしょうか
なにぶん、ド初心者なのですが・・・
 (´д`;)
 (\/)
  ((
Advanced Windowsによると

「最初からいきなりCOMアーキテクチャの学習を始める人には同情の意を禁じえない」

と。
>>520
Component Object Model
何ができるかって説明は面倒なんで自分で調べろ。
例えばIEコンポーネントのタブブラウザなんかもこのシステムで実現されている。

>>521
ド初心者なら何も考えずにMSの推奨どおりWNDCLASSEX使っとけば?
別に大した違いはないし。
524521:03/09/05 22:12
>>523
ありがとうございました。
>大した違いはないし。
で納得しました。WNDCLASSEX使うことにします。
Microsoft Visual Studio\VC98\Includ\WINUSER.h を見たところ、
弱冠メンバ変数(?)の数がWNDCLASSEXの方が多かったので、まだ自分には理解できない機能が余分にWNDCLASSEXにはいっているのかなぁと思いました。
>>520
実行形式ファイルの1つ。
スタックセグメントを持たないDOS EXE形式ファイルを
EXE2BINユーティリティで変換することにより得られる。
激しくつまんね。略してハゲ妻。
ハゲ妻 昼下がりの情事
>>527
コラ!! インテリぶるな!!
マジレスですが、MSDNライブラリでWin32APIのリファレンス見るにはどうたどればいいんでつか?
子一時間やってるけど、みつからないのですが。
530デフォルトの名無しさん:03/09/06 11:38
キーボードを押してもまったく反応させないようにするには…
どのAPIを使えばよいの?
グローバルフック
>>530
wParamメッセージを無視すれば、反応しないと同じだと思うが。
533デフォルトの名無しさん:03/09/06 15:41
スクロールメッセージの
SB_TOP とか SB_BOTTOM はどうやったら送られてきますか?
スクロールバーを操作したら
535デフォルトの名無しさん:03/09/06 19:20
StretchBltで縮小した画像がむちゃくちゃ汚いんですけど…
なんとかできませんか?
ゲフォ2MXにて
>>535
SetStretchBltMode() 試してみた?
>>536
わぁ,ありがとうございます!,綺麗にできました!
こんなAPIしりませんですた
538デフォルトの名無しさん:03/09/06 22:23
ウィンドウの大きさを変更したりしてWM_PAINTが呼び出されたときの再描写で
ビットマップなどを再描写したときにちらついてしまいます。
今はBeginPaint()を使っているのでこれが一度描画領域を消去してから描写しなおすらしく、
背景の色で消去せず上書きのようにすればちらつかないと思うのですが、
どなたかその方法を教えていただけないでしょうか?
WM_ERASEBKGNDを捕まえて潰しておくこと。
540538:03/09/06 22:35
ありがとうございました!
541デフォルトの名無しさん:03/09/06 23:04
ダイヤルアップネットワークの接続・切断やダイヤルアップネット
ワークエントリーの編集ができるWin32-APIってありますか?
むろんあります
543デフォルトの名無しさん:03/09/06 23:25
>>536
ありがd
拡大縮小は自前で補間処理を書かなきゃならないと思ってた。
このスレ見てヨカタ〜
>>529
なんか構成が変わったようだが見つからん事はなかろう。
例えばCreateFileなら
www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpfileio/html/_win32_createfile.asp
545デフォルトの名無しさん:03/09/07 04:10
windowをある一定の大きさより小さくサイズ変更出来ないようにするにはどうしたらいいですか?
>>545

・WM_GETMINMAXINFOに適当に反応
・WM_WINDOWPOSCHANGINGで適当に調整
547545:03/09/07 04:39
>>546
夜中なのにありがとうございました
>>542は屑
屑が屑を屑呼ばわりするの図。
test
551デフォルトの名無しさん:03/09/07 15:37
↓の関数なんですが

SetClassLong(hWindow,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_ARROW));

「LoadCursorの戻り値HCURSORをLONGに切り詰める」と警告しやがります。
そりゃごもっともですが、黙らせるような上手い方法はありませんか?
ただし、警告レベルを下げるとか、SetCursorを使うとかはなしです。
>> 551
キャストすればいいんでは?単純に
553552:03/09/07 16:12
ごめん、質問の意味を理解してませんでした

警告レベルを下げずに警告するな、というのはできないのでは?
一時的に下げる、とかでもダメ?
たいていのコンパイラの
#pragma
あたりで操作できないのかな

あるいはいっそのことヘッダファイルかなんかの
先行宣言の部分を強引に書きかえるしかないんじゃないの?

ちなみに、C++での話だったら、reinterpret_cast<>を
使っても警告してくるの?
>552 単純にやってだめだから質問してるんじゃないの?
>551 コンパイラは何よ?
555552:03/09/07 16:14
そういや、「切り詰める」と警告してくるの?
あなたの環境では HCURSOR と LONG の
サイズが違うのか…それならキャストは危険だな
HCURSOR = HICON__*で最近のVC++あたりは64bit環境を視野に入れてるから
警告を出すんじゃないか。まぁその辺は不用意にLONGにポインタをつっこませる
Win32API自体が糞だと思ってあきらめろ。
Win64対策ならSetWindowLongPtrとLONG_PTRだな
Win16は忘れた
>>553
んだな、規格違反はエラーであり、警告は規格外。
#pragma warning(disable : 4999)
560デフォルトの名無しさん:03/09/07 19:54
分割ペインってWin32APIレベルで用意されてる?
フレームワーク使わない場合は自分で実装しなきゃいけないのかな。
>>557
細かくてスマンが、今回はSetClassLongPtrな。
>>560
ウィンドウクラスとWIN32 APIは関係ないと思うが。
コモンコントロールには無いな
564デフォルトの名無しさん:03/09/07 21:13
質問おながいします。
CreateCompatibleDC()ですが、フォントとかのGDI
オブジェクトは元のDCから反映されてないみたいなのですが
どうすればいいのでしょう?
またなぜ反映してくれないのでしょうか?
565デフォルトの名無しさん:03/09/07 21:43
SetClassLong(hWindow,GCL_HCURSOR,(LONG)(LONG_PTR)LoadCursor(NULL,IDC_ARROW));

で黙りやがりました。どうもです。
何か怖い気もするけど、正常に動いてるし、まぁいいや。
>>565
いや、最近のSDKではSetClassLongの代わりにSetClassLongPtrを使うことになってるのよ
キャストを使えばそりゃ黙るだろう
つーか64bit対応が邪魔ならプロジェクトの設定で外すのが正道
今まで貯め込んできたライブラリまで全部移植するのは片手間じゃ無理
569デフォルトの名無しさん:03/09/08 00:43
system("cd sub");
を実行しようと思ったのですが、どうやらうまくいきません。
そもそもcdコマンドって外部プログラムじゃない気がしますが。

どうやったらこの機能を実現できますか?
>>569
基本的には子プロセスでカレントディレクトリを変更しても親プロセスに影響しないから無意味
つまり、カレントフォルダを変更する方法を教えてください。
ということです。
>>570
ありがとうございます。
親のプロセスのカレントを移動する方法はないでしょうか。
>>569
_chdir
>>573
ありがとう。これでできそうです。
もしかしてwinapiじゃなかったのかな。
だとしたらごめんなさい。
>>573
できればネタは控えて欲しいです。マジレス希望なので。
ちっ・・・
577569:03/09/08 00:50
>>575
??
え、ネタなの?
>>577
マジ
579569:03/09/08 00:52
ありがとう
580名無し@沢村:03/09/08 00:54
ここはAPIスレだから、>>573の回答は非常に不適切。
正しくはSetCurrentDirectory()だ。
581デフォルトの名無しさん:03/09/08 02:25
ウインアプリのウインドウにはprintfは使えない?ので、TextOutで出力
しているのですが、可変引数で無いので不便です。sprintfを使えば出来る
のですが、変数を用意し、2行書かなければなりません。sprintfの文字列を
戻り値で返すバージョン、又は、TextOutの可変引数バージョンがあるなら
教えてください。
自分で関数つくれボケ
>>581
MFCのCStringクラスを使えばsprintfよりは簡単に書けるかも。
C++ならboost::format使えば一応一行で書けるな。
585581:03/09/08 03:11
お答えありがとうございます。

>>582
可変引数はかなり難しかった気が。
...と書いて、varとかの構造体を何かやるという。
自分のLVでは無理っす。

>>583
MFCはほとんど使ったことが無いのですが、調べてみます。

>>584
::は使ったことが無いのですが、通常関数の感覚でコードに付け足して
みたのですが、エラーになってしまいました。いろいろ調べてみます。
586デフォルトの名無しさん:03/09/08 03:31
ShellExecuteで複数のURLを複数のウィンドウを開いて
表示する処理を行いたいのですが、どうしても
開いた一つ目のウィンドウ内で表示されてしまいます。
どのようにしたらよいでしょうか?
587デフォルトの名無しさん:03/09/08 03:44
親ウィンドウと子ウィンドウでそれぞれ別々のウィンドウクラスを作り、
コールバック関数を同じウィンドウプロシージャにしたいのですが、
動作がおかしくなりました。
同じプロシージャは使えないのでしょうか?
588名無し@沢村:03/09/08 03:55
>>586
ShellExecuteをやめてIWebBrowser2を使う。
589デフォルトの名無しさん:03/09/08 03:57
>>588
ありがとうございます。
早速取り組んでみます。
590デフォルトの名無しさん:03/09/08 11:06
Win32APIで、コントロールパネルやアプリケーションの追加削除画面を開くことは出来ますか?
WinExec("control appwiz.cpl", SW_SHOW);
>>587
Win32APIとあんまり関係ないだろ。
コールバック関数は静的(スタティック)である必要があり、
別々のウィンドウはそれぞれ別個のインスタンスを持ち、
スタティック関数は全インスタンス(メンバなら同一クラスの全インスタンス)に共通。
つまり、コールバックから各インスタンスへ振り分けてやる必要がある。
MFCなんかだとウィンドウハンドルからマップオブジェクトを利用して、
CWnd*を取得し、内部関数を呼ぶ構造(だったと思う)。
593デフォルトの名無しさん:03/09/08 14:31
我ながら情けない質問なのですが、リストビューの任意の項目を
選択するリストビューメッセージを、教えて頂けないでしょうか。
LVM_SETITEM
>>594
レスありがとうございました。おかげで
それらしいフラグを、ようやく発見できました。
596デフォルトの名無しさん:03/09/08 15:43
10行の.txtファイルを 自作メモ帳で表示します。
現在画面には4行表示できます。

このとき SCROLLINFO の設定は
nPage = 4;
nMin = 0;
nMax = 10;
ですか?

それとも
nPage = 4;
nMin = 0;
nMax = 10 - nPage;
ですか?
聞く前に試せ。
598デフォルトの名無しさん:03/09/08 20:15
Winny2の設定変更したら、自動的にアプリの再起動がかかったんだけど、
アプリの再起動ってどうやるん?
再起動が掛かったように見えるだけじゃねぇの?
設定を保存する。 自分自身のパスを取得し実行。実行元を終了。
>>598
単にメインルーチンで
main(){
for(;;)
{
 Application->Init();
 Application->Run();
}
}
とかやってるだけだろ。
>>598
メインフレームをSH_HIDE。
しばらくSleepしてから、位置を少しずらしてSH_SHOW。
たったこれだけで、何でもGUIで物事を考えてる連中にはきっと、
再起動したように見えるはず。
>>603
ループでCPU消費して、ついでにHDDにでもアクセスしとくとより効果的
>>603
なるほど。詰めが甘かったですね。もっと精進してきます。
んで見せかけてどうすんの
603がループしている。
>>605
FormCreate/FormDestoyイベントを発生させて設定の再読み込みでもしてるんだろ。
>>605
利用者に、アプリの再起動ってどうやるんだろ?って思わせる。
609デフォルトの名無しさん:03/09/09 02:17
ウィンドウの大きさを変えずにクライアント領域の大きさだけを変えるAPIって有りませんよね?
>>609
子ウィンドウいっこ貼る
>>609
私も以前ここで教えてもらったのですが
WM_NCCALCSIZEに反応するみたいです。。。
612デフォルトの名無しさん:03/09/09 11:04
画像等へ任意の色で網掛けするAPIってありますか?
ブラシにそのように設定するだけ
614デフォルトの名無しさん:03/09/09 11:12
ハッチブラシの線の間隔って変えられるの?
ゴチャゴチャ言わずに好きな網のビットマップを作ってブラシに関連づけろ
616デフォルトの名無しさん:03/09/09 20:32
フォルダを開いてウィンドウが表示される位置を指定したいです。

ShellExecuteEx(&sei); で非表示のままロードし、
WaitForSingleObject(sei.hProcess, INFINITE); で待って、
EnumWindows( EnumWndProc, (LPARAM)0); として、
EnumWndProcでウィンドウを移動してから表示させようと
したのですがsei.hProcessが0なってしまいます。

良い方法ありませんか?
SEE_MASK_NOCLOSEPROCESSは付けてるか?
(>>518によると付けてるようだが)
>>616
ShellExecuteExの戻り値/エラーコードはどうなってますか?
_SHELLEXECUTEINFOのcbSizeに値を設定していなかったりしませんか?
619616:03/09/09 20:52
ありがとうございます。
>>617 つけてます。(ちなみに518さんとは別人です)

>>616 sei.cbSize = sizeof(SHELLEXECUTEINFO); ってしてます。
戻り値は1でした。

フォルダの場合、他のプロセスで表示させて新しいプロセスは
すぐ終了してしまうのかな、と想像してますが...
ShellExecuteEx()より CreateProcess()の方が
構造体の初期化とか簡単で確実じゃね?
621616:03/09/09 21:33
>>620
PROCESS_INFORMATIONに値は入ってましたが、
WaitForSingleObject(pi.hProcess, INFINITE);

WaitForInputIdle(pi.hProcess, INFINITE);
で待ってくれているように見えませんでした。
なんででしょう?

CreateProcessだったらSTARTUPINFO使って位置を決められるものなの
でしょうか?どうも、うまく動きません。

質問ばかりですみませんが、何か良い方法があればお願いします。
>>621
dwProcessIdで示されるプロセスは、終了しているはずです。
NT系ならタスクモニタで確認して下さい。
これは、おそらく最初に起動したプロセス(A)がプロセス(B)を起動した後に
終了していると思われます。
PROCESS_INFORMATIONのPIDは、プロセスAのものと思われます。
画面上に表示されるものは、プロセスBになっているのでは?
このような動作をするアプリに、ペイントがありますね。

623622:03/09/09 23:01
622に書いている動作の通りとして。
Win2000以降なら、プロセスBのハンドルを取得するAPIがあったような・・・
以前MSDNで見た気が。ハンドル等のオブジェクトの生成元を追跡していく
ようなことが出来るAPIだったので、逆もあるはず。
よく覚えて無い、スマソ
624622:03/09/09 23:05
以前MSDNマガジンで記事が載ってたな〜
いつだったか思い出せない・・・
625616:03/09/09 23:47
>>622 ありがとうございます。

> プロセス(A)がプロセス(B)を起動した後に終了
私のイメージでは、プロセスAが元々ある場合は、プロセスBを起動すると、
BがやろうとしていたことをAに引き継ぎ、Aがスレッドとして実行しつつ
Bは終了してしまう。という感じです。
結果的に同じことですけど。

>オブジェクトの生成元を追跡していく
そんなこともできるんですね。初めて聞きました。
なんか、やりたいことは単純なのにややこしいですね。
C++からADO使おうとしてCOMの初期化(マルチスレッド使う)やってまつ。

CoInitializeEx(NULL, COINIT_MULTITHREADED);

こうやった後、

ShellExecute(hWnd, NULL, "http://www.yahoo.co.jp", NULL, NULL, SW_SHOWNORMAL);

としてみたんですが、ShellExecute が ERROR_FILE_NOT_FOUND(2) を返してきまつ。
CoInitializeEx(...) -> CoInitialize(NULL) とするとブラウザ立ち上がるんですが・・・
マルチスレッド環境でADOを使いたいので CoInitializeEx を使わなきゃだと思うんですが
CoInitializeEx 使うと ShellExecute がマトモに動かず・・・

どなたかこのような経験ありませんか?長文スマソ
627デフォルトの名無しさん:03/09/10 01:15
スタート→シャットダウンや、
タスクマネージャでの強制終了な時に送られる
ウインドウメッセージって無いですか?

常駐ソフトを作っていて
ウインドウズ終了時に設定保存したいのですが
628デフォルトの名無しさん:03/09/10 01:35
CreateWindow()でWS_HSCROLL、WS_VSCROLLを使い、
fMaskで SIF_DISABLENOSCROLLを使用しないで
スクロールバーがウィンドウの大きさによって出たり消えたりさせたいのですが、
スクロールバーが表示されているときに
クライアントエリアの大きさ(スクロールバーが表示されている部分を除いた大きさ)
を得るにはどうしたらいいでしょうか?

私のプログラムではWM_SIZE:の時に得られるクライアントエリアの大きさが
nMaxとnPageの関係によって
スクロールバーが表示されている部分を除いた大きさと
スクロールバーが表示されている部分も含めた大きさ
のどちらか一方になってしまうようです。
これを片方にすることはできないのでしょうか?
普通はこのようなことはないのでしょうか?
>>627
Windows終了時なら
WM_QUERYENDSESSION
WM_ENDSESSION
が送られてくるが。
630名無し@沢村:03/09/10 01:41
>>627
> スタート→シャットダウン
WM_QUERYENDSESSION
>>627
常駐ソフトがサービスを指しているなら注意。
WM_ENDSESSION,WM_QUERYENDSESSIONはlogoffの時にも
送られてくる・・・
632デフォルトの名無しさん:03/09/10 10:27
OS(Win95,Win98,NT,2000,XP)を識別する方法を教えて下さい
633●のテストカキコ中:03/09/10 10:29
http://ula2ch.muvc.net/ (このカキコは削除しても良いです)
634デフォルトの名無しさん:03/09/10 11:47
>>632
GetVersionEx()
635デフォルトの名無しさん:03/09/10 11:53
>>634
Win95とWin98の区別は?
636デフォルトの名無しさん:03/09/10 11:59
あと、NTと2000とXPもね
>>635
それくらいドキュメント嫁
C:\>ver
639634:03/09/10 12:15
>>635>>636
OSVERSIONINFOを嫁
640634:03/09/10 12:18
つか>>635-636みたいなのもHungryGhostって言うのかね
641デフォルトの名無しさん:03/09/10 12:43
いいから教えれよカス共が
642デフォルトの名無しさん:03/09/10 12:46
いいから調べろよ負け犬が
643デフォルトの名無しさん:03/09/10 14:34
マイコンピュータ右クリック→プロパティ→全般→システム
644デフォルトの名無しさん:03/09/10 14:53
>>642
いいから氏ねよ負け犬のうんこが
>>643
あり
黙れよ負け犬のうんこの食物繊維
ダイアログで閉じるボタンを押したら最小化してそのあとに閉じるには、
これでだめ?

case WM_CLOSE:
SendMessage(hDlg, WM_SYSCOMMAND, SC_MINIMIZE, 0);
EndDialog(hDlg, LOWORD(wParam));
return TRUE;

なぜかタスクバーからすぐ消えてくれないんだけど…
647デフォルトの名無しさん:03/09/10 18:34
氏ねよ負け犬のうんこの食物繊維を食ううんこ蝿が
メッセージ送信先と、case WM_CLOSE: を含むウィンドウプロシージャを持つものが同じ?
649デフォルトの名無しさん:03/09/10 18:57
相当【負け犬】という言葉に敏感とみた(w

負け犬負け犬負け犬負け犬負け犬
負け犬負け犬負け犬負け犬負け犬

ぶははははははははははははあああああああ あれ?(w
650デフォルトの名無しさん:03/09/10 19:00
ということにしたいようだな
むしろ>>649がネタに釣られている
652646:03/09/10 19:37
>648
同じです。
>646
WM_SYSCOMMANDが処理されていないのでは?
SendMessageでタイムアウトが返っているだけとか
654646:03/09/10 20:43
>653
最小化はするのでメッセージは処理されてるのかなぁ?
最小化したあとにタスクバーに3秒ぐらい残ってしまうんです。
タスクトレイにアイコンを出していて、そのアイコンが拾ったメッセージで処理する時はいいのですが、
とうのダイアログ自体を閉じるボタンで閉じた時に症状が出ます。

ちなみにSendMessageの戻り値は0でした。
655646:03/09/10 20:49
すみません。原因のようなものがわかりました。
タスクバーに入れていたMS-IMEの影響だったようです。

でも、ちゃんと動いてるソフトもあるのに何でだろう…
タスクバーに暫く残ったりするのを防ぐには一旦ShowWindow(hWnd, SW_HIDE);
しておけばいいんじゃなかったか。
EndDialogってWM_CLOSE出すんじゃ?
WinXPのPPPoEにファイアーウォールを設定するAPIを教えてくれ。
PBKファイルにもレジストリにも見当たらない・・・。
>>659
Thanks!!完璧!!!
>>649
最近エヴァ板に出没する荒らし蚊と思いました
あちこち探しても、Windows2000のAWEのAPIの使い方の
情報がありません。EMSのように使えるらしいのですが、
どのようにプログラムを作ったらよいのですか?
WAVE再生のWaveOutOpenや、録音のWaveInOpenの
ボリュームを調整したいのですが、WAVE_MAPPERで
デバイスを指定している場合、使用しているデバイスの
LineIDやデバイスのIndexなんかは、ひっぱってこれる
のでしょうか・・・・
.txtのファイルを読み込んで画面に表示するには
どんな関数使ったら良いのでしょうか?
type
LoadImageってJPEGやPNGも読み込めるの?
そうだったんならOleLoadPictureで作ったオレは激しく鬱だ・・・(´・ω・`)
>>666
昔のWindowsにやさすぃne!!
668デフォルトの名無しさん:03/09/13 04:07
カスタムウィンドウクラスじゃないSTATICとかのウィンドウクラスで
背景色とかを変えるにはどうしたらいいですか?
>>664
puts()
>>668
WM_CTLCOLORSTATIC
672デフォルトの名無しさん:03/09/13 07:22
マウスカーソルがウィンドウ上にあるか、外にあるか知るにはどうしたらいいですか?

WM_MOUSEMOVEだとウィンドウ上を動くたびにすごく無駄なきがするので・・・
>>663
使ったことが無いが、たぶんwaveOutSetVolume。
WAVEFORMATEX、WAVEHDR構造体には無い。
>>672
GetWindowRectしてPtInRect
もしくはWindowFromPoint
>>673
この人は、もうちょっと高度なオーディオミキサーの
制御がしたいようですが。

深く考えなければ音量調整はwaveOutSetVolumeで出来るけどね。
ただし、ドライバーの作りで少々挙動が変わる。
ミキサーのボリュームと連動している場合と、してない場合とか。

WAVE_MAPPER で「オープン」してるなら、オープンしているハンドルを使って、
mixerOpen API 呼べば開けるでしょ。
オープンして無くても一瞬開いてハンドル作ってミキサー
開いた後で閉じちゃえ。

676デフォルトの名無しさん:03/09/14 02:23
ボタンの名前を複数行表示するにはどうしたらいいですか?
残念ながらそれはムリ。
オーナードロー
679デフォルトの名無しさん:03/09/14 02:31
BS_MULTILINE
>669
Thanks!!完璧!!!
681デフォルトの名無しさん:03/09/14 18:14
WIN32ってなんでつぁか?
682デフォルトの名無しさん:03/09/14 18:26
ダイアログにスライダーコントロールを貼り付けたのですが
背景を透明にしたくて困っています。
スタティックコントロールはSetBkMode(hDC, TRANSPARENT);
でできたのですが同様のことをするにはどのようにしたら
よいでしょうか?
683デフォルトの名無しさん:03/09/14 23:12
WIN32ってなんでつぁか?
684デフォルトの名無しさん:03/09/15 01:03
カメラの画像を表示するソフトを作ろうと思っているのですが、
GlobalAllocでバッファを取り、そこに、24ビットDIBを、0,5
秒間ごとに入れ替えています。これを、AVIとして表示、もしくは
保存したいのですが、なにか良いAPI関数はありますでしょうか?
685デフォルトの名無しさん:03/09/15 01:05
>>683
ええっと32ビットって感じかい?

ってのは嘘で、Win95以降をあらわすことが多いと思うで。
Win3.1はWin16。それ以降は大体Win32といってもよい。

そういえば、Win95以来GUIの大きな変化はないな。
XPもやっぱり変わっていない。右上の×とか_とか□とか。
>>685
右上の凶な
>>684
Video for Windowsでぐぐる
688デフォルトの名無しさん:03/09/15 05:22
DLLを指定して公開されたAPIの関数宣言一覧を取得するツールはないでしょうか?
具体的にはcabview.dll、zipfldr.dllのAPIを調べてみたいのです。
フリーのアーカイバは使いたくないので。
689688:03/09/15 05:36
tdump(Borland製), dumpbin(MS製)を使って一覧を取得できました。
ちなみにExportしている関数は両DLLともに
EXPORT ord:0002='DllCanUnloadNow'
EXPORT ord:0003='DllGetClassObject'
EXPORT ord:0004='DllRegisterServer'
EXPORT ord:0005='DllUnregisterServer'
EXPORT ord:0006='RegisterSendto'
EXPORT ord:0001='RouteTheCall'
でしたがいまいち使い方が分からないです。各APIをもうちょっと調べてみます。
690デフォルトの名無しさん:03/09/15 05:44
>>687
参考になるものが、ありました。
ありがとうございます。
>>689
そいつらを調べても時間の無駄だと思うよ。
Shell Extensionだから。
692デフォルトの名無しさん:03/09/15 09:07
ThreadIDから情報取得する関数ってありますか?
693デフォルトの名無しさん:03/09/15 09:53
Platform SDKってどこに落ちてます?
落ちちゃいない。
696デフォルトの名無しさん:03/09/15 17:06
WIN32ってなんでつぁか?
697デフォルトの名無しさん:03/09/15 20:22
windows 32bitじゃないの?
698デフォルトの名無しさん:03/09/15 21:29
プログラム作るときに必要になるWin32ってなんでつか?
699デフォルトの名無しさん:03/09/15 22:08
QueueUserWorkItemってAPI使おうとしてるのですが
これもCreateThreadみたいにLPTHREAD_START_ROUTINE内でCライブラリ関数使っちゃだめなんですかね?
700デフォルトの名無しさん:03/09/16 01:57
C#のShowDialogのように、ウインドウが処理結果を返すまで、呼び出し側の次の行のコードが実行されないようにするにはEnableWindow(PARENT,FALSE)のあとにどうすればよいのでしょう。
ShowModalじゃあかんの?
703デフォルトの名無しさん:03/09/16 02:41
>>701
できました
ありがとう
>>696
厨房君
次の夏休みまでさようなら
705デフォルトの名無しさん:03/09/16 17:19
ツリービューを作ろうとして下のコードを実行するとアプリケーションとOSが固まり、タスクマネージャも起動できなくなります。
ログオフを選んで強制終了させなければなりませんでした。
何故でしょう?

INITCOMMONCONTROLSEX ic;
ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
ic.dwICC = ICC_TREEVIEW_CLASSES;
InitCommonControlsEx(&ic);
hwnd = CreateWindowEx(0, WC_TREEVIEW, "Tree View",
WS_CHILD | WS_BORDER | WS_VISIBLE | TVS_HASLINES |
TVS_HASBUTTONS | TVS_LINESATROOT | TVS_EDITLABELS,
0, 0, 100, 100,
Parent, (HMENU)IDC_MYAPP, hInstance, NULL);
706705:03/09/16 20:16
なんかネット上に落ちてるプログラムを実行してもフリーズするので僕のシステムのComCtl自体が変になっているのかもしれません。
自分で造ることにしたのでスレ汚しすみません
ADO によるデータベース接続のサンプル
どこかにありませんか?
>>707
ありますよ
>>708
教えろや
自分で探せよ。

ナイス(゚∀゚)コンビ!!
質問です。
ボタンに画像を表示させるにはどうすればいいのですか。
ダイアログのボタンです。↑
714デフォルトの名無しさん:03/09/18 11:21
一応、ageておくので答えてください。
>>710へ戻る
>>712
WM_PAINT
717デフォルトの名無しさん:03/09/18 14:22
LPDWORD lpdword;

ReadFile(file,str,1,lpdword,NULL);
これでファイルリードしたらlpdwordがWrittenできないという
エラーがでました。
なんで、型がこんなにややこしいのでしょうか?
目的は、CStringにstrの内容を代入したいのですが
とにかくLPDWORDのヘルプがありませんでしたこの正体はなんでつか?

BOOL ReadFile(
HANDLE hFile,
LPVOID lpBuffer,
DWORD nNumberOfBytesToRead,
LPDWORD lpNumberOfBytesRead,
LPOVERLAPPED lpOverlapped
);
API以前の問題だなこりゃ
全然ややこしくないので、ちゃんと勉強して理解するまでネットに繋がないでくだちい。
717は、
DWORD *ptr; *ptr = SOME_VALUE;
とかやるタイプか。
わかってしまえばなんてこたないが
型というかtypedefされたのは最初はややこしいかもしれない。
LPCTSTR
LPTSTR
LPCSTR

もう初めに見たときは何がなんだか
Windows98,BCCですが、「開く」ダイアログが出てきません
最初の二行に

#define _WIN32_WINNT 0x400
#define WINVER 0x400

も入れています
どうすれば上手くいくのか教えて下さい

static HBITMAP hbmp;
とグローバルに定義しておいて、関数
void get_bmphandle(HWND hw)
によってhbmpを得て
void bit_paint(HWND hw)
で描画しようとしました
723722:03/09/18 15:55
void get_bmphandle(HWND hw){
char szFilter[]="ビットマップ(*.bmp)\0*.bmp\0すべて(*.*)\0*.*\0";
OPENFILENAME ofn;
char *szFileName;//ダイアログから受け取るファイルの名前

memset(&ofn,0,sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hw;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = FILENAMESIZE;
ofn.lpstrTitle = "ファイル名の取得";
ofn.lpstrDefExt = "sqf";
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

ZeroMemory(szFileName,sizeof(szFileName));//szFileNameの初期化

if(GetOpenFileName(&ofn)){
hbmp=(HBITMAP)LoadImage((HINSTANCE)GetWindowLong(hw,GWL_HINSTANCE),//インスタンスハンドル
szFileName,//arb
IMAGE_BITMAP,
0,0,
LR_CREATEDIBSECTION | LR_LOADFROMFILE);
if(hbmp==NULL){MessageBox(hw,"ファイルオープンに失敗しました","msg",MB_OK);}
}
}
725722:03/09/18 16:18
>724
あなたの仰る通りですね・・・
malloc入れたらダイアログ出てきました
char szFileName[MAX_PATH]でいいじゃん。
727722:03/09/18 16:31
>726
有難うございます
その方が簡単みたいですね
>>723
> char *szFileName;//ダイアログから受け取るファイルの名前
> ZeroMemory(szFileName,sizeof(szFileName));//szFileNameの初期化

っていうかダメだろ‥‥
背景のCGにキャラの立ち絵を重ねるような処理ってどうすればできますか?
>>729
まー方法はいろいろあるけど。
とりあえずTransparentBlt()が楽。
ファイルをロードしたあとDIBでマスクを自動的に作れるクラスを作っておくともっと幸せになれる。
リージョンつくってDCに選択っててもあらぁな。
733717:03/09/19 10:36
>>718-721
もうね、全部ね、char* intで統一汁とvoid*ややこしいし
なんでパラメタごとに元の肩を見に行くのかと、

>DWORD *ptr; *ptr = SOME_VALUE;
?初期値の場合はポインタとらない主義?という回答でいいでつか?
>>733
(;´Д`)
736717:03/09/19 11:14
>>734-735
( ´_ゝ`)ついでに教えてくれ
前の続きになるが
FileRead()のパラメタで読み込み先のポインタLPWORDがあるんだが
それの対応をEditBoxの内容にしたいわけよ、つまり表示させていわけ
だが、EditBoxがCString型なためどうやってLPDWORDを関連させて
CStringに代入しようか考えてるんだが、char[]で経由したほうがいいでつか?

737デフォルトの名無しさん:03/09/19 11:18
正直このままC++をやり続けるのはどうかと思う。
Cを勉強して出直すか、C#へ行って楽になってしまうか、どちらかをお勧めする。
(C#へ行くにしてもCの知識があるとないとでは大違いだが)
つーか、CStringとか言ってるならみんなMFCでやりゃいいじゃねえか。
なんでFileReadなんてraw apiを使うのかワカラン。
740717:03/09/19 11:29
>Cを勉強して出直すか、C#へ行って楽になってしまうか、どちらかをお勧めする。
Cは今復習してるぽ、C++チョットオブジェクト嗜好なだけ、C#♪
俺が足りないのはセンスだけだと思うんだが

それとLPDWORDはvoid*だからやっぱり
char a[];
ReadFile(,,a,,);
CString b = a;
これはまずいのか?
>>740
藻前に足りないのはセンスだけじゃないのは確実だ

LPDWORDがvoid*なんて言ってる時点で終わってる
742717:03/09/19 11:41
>>739
>CStringとか言ってるならみんなMFCでやりゃいいじゃねえか。
ごもっとだ、もっとも最初はメッセージ制御からネイティブでやってた
だが表示が面倒なんで、表示だけクラスつかってる
MFC限定かC言語限定かどのスレがいいかわからんし、、、
>>742
MFCとかAPI以前の問題だなこりゃ。
744717:03/09/19 11:48
>>741
( ´_ゝ`)あぁ定義みたら間違ってたYO
typedef unsigned long DWORD;
typedef DWORD far *LPDWORD;
ころでfarって32ビットって意味?
2つ目の*LPDWORDがわからん
ポインタは何を指しているの?ってことじゃないの?
747737:03/09/19 11:55
>>740
キミに足りないのは「きちんと理解しようとする心構え」だと思う。
センスが問われるのは、ずーっとずーっと先のレベルだよ。

テキトーに雰囲気でつかもうとせず、根気よくヘルプをしっかり読もう。
DWORD lpdword;

ReadFile(file,str,1,&lpdword,NULL);
>>748
まぎらわしいをまぎわらしいと書く人って結構居るんだな
>>749
誤爆か?
>>750
誤爆じゃないだろw
まわりくどいレスだがな〜
752名無し@沢村:03/09/19 12:24
>>750
DWORD型の変数名にlpを付ける人はあまりいない
>>752
それを言いたかったのか。
できるだけ元(>>717)を変えたくなかったから、変数名はそのままにした。
DWORD dword;
LPDWORD lpdword;

lpdword = &dword;

ReadFile(file,str,1,lpdword,NULL);

これでどーよ?
>>717の書いたところには手をつけてないぞw
755デフォルトの名無しさん:03/09/19 12:30
>>752
今となってはLPもPも変わんないからね!
でも64ビットポインタになったらどうなるんだろう?
LLPとかになるのかな?
ソース可換性のために要るんだろうなぁ
756717:03/09/19 12:37
>>745
そうギモンを感じれたら・・・
>>746
じゃnearとか読みとばせれってことね、MSDNをかちゅようせよってことね
>>747
<<<<<ガクガクガクブルブル>>>>>>>>>>>俺の人生を指摘されてるようだ・・・
>>748
あたま整理するぽ
>>754
>717への良いヒントだな
>>757
だな。
これで>>720が言いたいことも分かるはずだぞ。
759717:03/09/19 12:54
>>754
>>757
こういうニュアンス?
unsigned long ulong;
unsigned long* pulong;

pulong = &ulong;
ReadFile(file,str,1,pulong,NULL);
( ´∀`)なんかまたおこられそう、、、
760717:03/09/19 13:11
( ´∀`)激しく(>>720)の言うことがワカタ
char* pchar = 0x8000; //マスタ
//char* pchar = 0x7f00; //ダミー1
//char* pchar = 0x5700; //ダミー2
memcpy( pchar, 0x8f00, 4096 );

G△MEB○Y ならありえる。
なんで、みんな明らかな釣り師に
かまってるんだ?
763737:03/09/19 14:54
>>762
キミ、「釣り」とかもう古いんだよ。
時代はマジレス。
ハァ?釣り?奴を見ろ。目がマジだ。
この人はさぁ、本気なんだよ。わかる?
>>762
誠意って、何かね。
>>740
むかつくんだよ
まぁセンスとか言っちゃって、自分のレベルを自覚してないのは痛いな。
769デフォルトの名無しさん:03/09/19 16:12
テキストファイルをReadFileで読み込むとfreadのテキストモードと違い、
改行コードの変換は行われずCRが付加されたまま(CR+LF)になりますよね。
通常のこCRは自前で除去すべきなのでしょうか?

何が問題かというと
1.あっても意味のないCRは処理の邪魔になる。
2.Winのテキストエディタで作成したファイルは通常CRが付加されるが、
  自前でWriteFileで出力したデータはCRが付加されないので読み込んだ際にデータの矛盾が起きる。
>>769
漏れなら、自前で出力するデータにCRを付加する
771 :03/09/19 16:24
>>769
除去する必要があるなら除去する。
必要がない、あるいは除去してはいけないのなら除去しない。

まあ普通はもし除去するなら保存時にまた付加しておくのが
筋ってもんでは?
>>770-771
要するにfopen系と同じ仕様にしなさいと言う事ですかね。
ご意見ありがとうです。
773ホゲホゲ:03/09/19 21:24
既存のファイルをコピーするコードを教えてください
CopyFile
775ホゲホゲ:03/09/19 21:33
ありがとう既存のファイルを無限ループでいっぱい作りたんだけど
Win32?studio.h?どっちいんくるーどすればいいんですか・?

氏ね
くたばれ
778デフォルトの名無しさん:03/09/19 22:36
オーディオミキサーが2個以上存在(サウンドカードとUSBオーディオ等)するときに、
現在、優先するデバイスになっているミキサーを特定する方法はあるのでしょうか?

Win2000以外は優先するデバイスのIDが0になるようなので特定できるのですが、
Win2000のみIDが変化せず、優先するデバイスのIDが特定できず困っています。

やりたいことは、優先するデバイスになっているミキサーを制御することです。
779名無し@沢村:03/09/19 23:15
>>755
ヌヒよ、既存ならばわざわざ作らなくてもいいではないか
>>778
実際に操作して値の変動を確認する
781デフォルトの名無しさん:03/09/20 16:22
自前でダイアログボックスのようなウィンドウを作りたいのですが、どうやったらいいかわかりません

CreateWindow(
  TEXT("STATIC") , TEXT("自前ダイアログ") ,
  WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
  20 , 20 , 100 , 100 ,
  hwnd , (HMENU)1 , ((LPCREATESTRUCT)(lp))->hInstance, NULL
);

こんな感じでやってみたのですがウィンドウは出てきません。
どうやったらいいですか?
782781:03/09/20 16:27
すみません、親ウィンドウから呼び出されてダイアログウィンドウのように表示されるウィンドウを作りたいということです
>>718-719
STATICクラスを使わず、
普通にウィンドウを作るように書けば無問題
784781:03/09/20 17:16
WNDCLASS pre_wc;

pre_wc.style = CS_HREDRAW | CS_VREDRAW;
pre_wc.lpfnWndProc = PreProc;
pre_wc.cbClsExtra = pre_wc.cbWndExtra = 0;
pre_wc.hInstance = ((LPCREATESTRUCT)(lp))->hInstance;
pre_wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
pre_wc.hCursor = LoadCursor(NULL, IDC_ARROW);
pre_wc.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
pre_wc.lpszMenuName = NULL;
pre_wc.lpszClassName = TEXT("PREVIEW");

if (!RegisterClass(&pre_wc)) exit(1);

CreateWindow(
  TEXT("PREVIEW") , TEXT("ダイアロググ") ,
  WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
  CW_USEDEFAULT , CW_USEDEFAULT , 100 , 100 ,
  hwnd , NULL , ((LPCREATESTRUCT)(lp))->hInstance, NULL
);

こんなんでいいんでしょうか?
コンパイルとかはは問題なく通るのですが、やっぱりダイアログは表示されませんでした
どこが間違ってるんでしょうか・・・
785デフォルトの名無しさん:03/09/20 17:16
>>781
APIでウインドウを作るのは、かなり複雑。
関数1つですむようなことじゃないよ。
DialogBox()
CreateDialog()
DialogBoxIndirect()
CreateDialogIndirect()
などを使うんだが、APIの知識がないと無理。
http://www.kumei.ne.jp/c_lang/index_sdk.html
を参考に。
786781:03/09/20 17:48
>>785
難しいことがよくわかりました
DialogBox()とかでいってみようと思います
ありがとうございました
>>786
つーてもメッセージループとウインドウプロシージャは最低限必要だね

やっぱこれでしょう

● 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
てか 781 のこと気になるですな。提示されたコードに問題はなさげだし・・・
PreProc の中身はどんな感じですか? 私,前に
 if (msg =- WM_CLSOE) { // == じゃなくて =- になってる!
  ::DestoryWindow(hwnd);
  ...
みたいな事やらかしてて,エラーメッセージも出ないし
アプリケーションも落ちる気配がないし,悩んだ事がありました。
WinMe で実行すると一瞬で StackOverFlow で落ちてくれたんだけど(わらぃ
WM_CLSOE...
CreateWindow()したら
ShowWindow()で作ったウィンドウを表示して
UpdateWindow()で内容を表示かな?
プログラミングWindowsを丁度第三章まで読み終わったばかりでおこがましいんだけど。
>>781
どうでもいいことですけど、
RegisterClassは返り値チェックしているのに、CreateWindowは
なぜチェックしない?
ソースのコピペのようですが、実際ソースはそう?
792781:03/09/20 21:26
みなさんすみません
色々試した結果784でいけそうな感じがしてきました
そこの部分だけ新しく別プロジェクトで実行してみたらちゃんと動きました
子ウィンドウを作る部分だけ関数化して更にソースも分割していたので変数か何かがおかしかったのかも知れません
おさがわせしました
793788:03/09/20 21:50
>>789 今日の私はなんかもうダメみたいです。。。_| ̄|○
794デフォルトの名無しさん:03/09/20 22:26
アプリを作っていて、他のウィンドウの背面にあるウィンドウを手前に
出したくて、普通ならForegroundWindowで問題ないはずなのですが、
なぜか、手前に出てきてくれません。SetWindowPosで最前面にする方法だと
手前に出てくるのですが、これだと、永久にフローティング状態に
なってしまいます。
これって原因わかりますか?または解決方法ありましたらご教授ください

>>794
問題ないはずの根拠は?

http://www.asia.microsoft.com/japan/msdn/windows/windows2000/win2000appcomp.asp
>自動的にウィンドウを手前に表示させるために "SetForegroundWindow" に頼っていてはいけません。
796デフォルトの名無しさん:03/09/21 01:56
>>795
ありがとうございます。しかし、それでは、任意のウィンドウを
まえにもってこれませんね。
関連の書類ファイルをダブルクリックして、そこから
起動中のアプリのウィンドウを表示させたいという
当たり前のことができなくなりますよね。

うーん
798デフォルトの名無しさん:03/09/21 03:13
はじめまして。
Regionを利用するアプリケーションにおいて、GDIに関連することで質問があります。
GDIにおいて、滑らかな曲線等(アンチエイリアスが行われている)を得ることはできるのでしょうか。
アプリケーションは、デスクトップマスコット?のような、既存のBitmapからRegionを作成し、背景部分を透過させるという物です。
論理サイズとビューポートの設定で拡縮を行うのもためしたのですが、望むような結果が得られません。
GDI+においては、必要十分な結果は得られたのですが、品質的にイマイチ感があります。
何か、スマートな方法があれば、教えてください。
よろしくおねがいします
>>796
ユーザーが操作中にいきなりフォーカスを奪われたら迷惑だから
タスクトレイに通知を出すなりしろってこった
>>798
Windows2000/XPならLeyered Windowを使えばピクセル単位でウィンドウの透明度を
設定できるのでアンチエイリアスだろうとかけ放題だが。
>>796
フローティング状態って何?SetWindowPosにHWND_TOPでZオーダーを最前面に設定するだけじゃダメなの?
VirtualAllocのMEM_RESERVEで予約し、MEM_COMMITを使ってコミットします。
そして何らかのデータを確保した領域にコピーし、
VirtualFreeのMEM_DECOMMITでコミットした状態を解除すると、
確保した領域のデータは保証されないと思っていいのでしょうか?

つまり、再びVirtualAllocのMEM_COMMITを使っても無駄ということで合ってますか?
803デフォルトの名無しさん:03/09/21 10:20
FindWindowExで他のプロセスのウィンドウのエディットコントロールのハンドルを取得して、
EM_GETLINEで取得しようとしたのですが、
Windows2000では動くのにWindows98SEでは相手側のプロセスが死んでしまいます。
どうすれば両方で動くようになるのでしょうか?
EM_GETLINEで取得->EM_GETLINEで文字列を取得
805798:03/09/21 12:01
>>800
レスありがとうございます。

ピクセル単位で処理できるというのは、初めて知りました。
LayeredWindowはあくまで、ウィンドウ全体に対し透過色を設定とアルファ値を設定するものだと思っていました。
アルファブレンドは特に必要ないと思ったため、Regionで処理しようと思っていました。
LayeredWindowを適用するAPIは、
SetLayeredWindowAttributes(hwnd,0,Byte(alpha),LWA_ALPHA);
という感じだと思うのですが(Delphi)、ピクセル単位の処理というのは、どのように行うのでしょうか?
お手数とは思いますが、よろしくお願いします。
>>805
UpdateLayeredWindowでぐぐる
>>802
> つまり、再びVirtualAllocのMEM_COMMITを使っても無駄ということで合ってますか?

て言うか、再び MEM_COMMIT した時点でゼロクリアされるやん。
http://msdn.microsoft.com/library/en-us/memory/base/virtualalloc.asp
808デフォルトの名無しさん:03/09/21 13:47
アプリケーションが終了する時に、
必ず通るメッセージって何ですか?

終了しますか?ダイアログを出したいのです
>>808
普通はWM_CLOSE
810デフォルトの名無しさん:03/09/21 16:18
>>808
OnDestroy関数だよ
>終了しますか?ダイアログを出したい
のなら、
WM_DESTROYは少々手遅れの気があるが。
画像を読みこんで、画像と同じ大きさのウィンドウ上に画像を表示、
ってのをやろうとしています。

まず画像データを読み込んで情報を取得、
CreateWindow関数実行時にウィンドウのサイズに画像のサイズの値をそのまま
指定して、ウィンドウプロシージャでWM_NCCALCSIZEに対して他の処理を挟ま
ずに単にreturn 0;とすることでクライアント領域のサイズ=ウィンドウのサイズと
しています。
これでサイズは画像=クライアント=ウィンドウになる、という狙いです。
ただ、ある程度小さい画像を指定すると、何故か生成されるウィンドウが画像より
大きくなってしまいます。
画像(68,98)->ウィンドウ(112,98)みたいに。

OutputDebugStringで追ってみたところ、
・CreateWindow実行直前では、値に問題無し。
 (CreateWindowの引数は、こちらの予想通り)
・ウィンドウプロシージャでWM_NCCALCSIZEを受け取った時点では、
GetWindowRectでRECT構造体に入る値は大きくなってしまっている。
という風になりました。

ウィンドウの指定サイズが小さすぎると自動的に補正されるものなんですか?
>>812
経験則ですが、WS_OVERLAPPEDスタイルだと一定サイズ以下に小さくできませんね。
WS_GETMINMAXINFOをきちんと処理してもだめ。どこかにドキュメントあるのかな?

というわけでWS_POPUPスタイルでいきましょう。いくらでも縮められます。
ただしこの場合もWS_CAPTIONを付けちゃうと、一定サイズ以下になりません。
814813:03/09/21 17:50
訂正 WS_GETMINMAXINFO → WM_GETMINMAXINFO
815812:03/09/21 18:19
>813
ありがとう。ご指摘の通り、WS_OVERLAPPEDWINDOWスタイルを
指定してましたが、WS_POPUPに変えると期待通りの動作になりました。

816798:03/09/21 21:30
>>805
UpdateLayeredWindow、MSDNの方を参照しました。
が、LayreredWindowのステータス更新用のAPIに思えるのですが..
申し訳ないです、アンチエイリアスとの関連がわかりません。
全体を少しだけ透過させるというのは、APIが2k/xp限定であること、また、「少しだけ透過」させても全体が透過されているため、アンチエイリアスとしては効果が薄いため、考慮から除去しています。
それとも、背景色を完全に透過させた後に、透過させてはいけない部分を任意のドットで縁取りし、その部分をUpdate~APIで半透化という意図なのでしょうか?
その場合、透過させてはいけない部分が単色とは限らないため、内側なり外側なりへ縁取りを行わないといけないと思うのですが...
アニメーションをサポートしたいので、縁を得るためのコストが気になります。

お手数とは思いますが、LayeredWindowを用いたアンチエイリアスの具体的な手順を、よろしくお願いします。
>>800 さんの記述からは、何かしらのトリッキーな利用法があるという印象を受けます。
817808:03/09/21 22:19
こんばんわ808です。
WM_CLOSEに、
MessageBox入れると上手くいくようになりました。

xボタンを押したときだけですが。

PostQuitMessageや
Destroyメソッド呼び出したとき、
IDOKボタン押したとき
に、OnCloseを通ってくれないのです。

CloseWindowメソッド呼んでも、最小化するだけなんです。

どがんして終わったらよかとでしょうか?
818808:03/09/21 22:24
WM_CLOSEが呼ばれるわけやけん

SendMessage(WM_CLOSE)呼べばよかだけやん。

なんね
BITMAP構造体のカラープレーンってなんですか?
カラー プレーンの個数は常に1です。とかかれているドキュメントもありましたが、
意味がわかりません。
RGBをプレーンごと別々に表示してた頃の名残かな?
よくわからん
>>820
それでいいんじゃね?
PC-9801の4096色中16色は4プレーンだったか。
4GBまでメモリ実装できるパソコンがあるのですが、アプリケーションで2GBのメモリを確保した
いのですが、malloc(),new,GlobalAlloc,LocalAllocなどのいずれかで確保できますか?
ちらっと見たメモリレイアウトでは、OS(WIN2000Pro)としてユーザーモードとカーネルモード
(スーパバイザモード)で各2GBとあったのですが、仮にユーザーモードで2GBだとしたら
当然2GBのメモリを確保することはできませんよね?論理アドレスで連続した2GBのメモリ
を確保することは可能でしょうか?どなたか教えてください。
ms-help://MS.PSDK.1033/memory/base/large_memory_support.htm
の付近を参照すれ。
インストールされているMSDNのバージョンが違うのか、でてきませんが、IEで
ms-help://MS.PSDK.1033/memory/base/large_memory_support.htmといれてもでてきません。
ちなみにインストしてある、MSDNは2001年の1月リリースのやつです。ネット上でのアドレス
わかりませんか???またはその部分をコピペしてくれてもうれしいのですが、すみません。
ありがとうございます。読んでいます。
なんとなくWindows2000 Proではだめで、XP Pro、Windows 2000 Advanced Server, Windows 2000 Datacenter Serverでないといけないような気がしてきたのですが、、、気のせいでしょうか?
もう少し読んでみます。
TAPIの使い方についてPCで電話をかけ、
会話する方法を解説しているサイト知りませんか?
829デフォルトの名無しさん:03/09/22 18:33
アマゾンで勧められています
どうすべきでしょうか

ボーランドオタにはエロゲーオタが多いのでしょうか

http://www.amazon.co.jp/exec/obidos/ASIN/B0000794U5/ref%3Dsr_aps_sw_3/249-9336132-8746746
ワロタ
アマゾンで今までBuilder買った奴が一人しかいなくて、
そいつが何を血迷ったかエロゲも同時に買ったと予想
なんでAPIスレにそんなの書き込むんだ?
そもそもBCBスレじゃ結構前に既出なんだが‥‥
いろいろ調査した結果わけがわからなくなったのですが、Windows2000Proで(Advanced severでもWINXPでもない)アプリケーションで2GBのメモリを確保することはできますか???
ユーザーモード空間は最大2GBなので2GB取れるはずないのはわかるのですが、
スワップなしのメモリ(論理アドレスでも連続している必要はないえすが)2GB取れますか?
>>824,826はどちらかというと4Gを超えるメモリを扱うのに使うものですよね
editbinやリンカオプションの/LARGEADDRESSWAREはどうでしょう

あとスワップ無しはまた別問題のような気がします
SetFocusもSetForegroundWindowもSetActiveWindowも
お目当てのウインドウ以外のアプリケーションのメニューが出てる状態だと、
全然アクティブにしてくれないんですが、
何かいい方法ないでしょうか?

アクティブにしたいウィンドウのタイトルバーをクリックするとか
ALTキーを送った後にアクティブにするとか、対処療法しか思いつきません。
誰か知恵WOO
>>835
>>794-
837デフォルトの名無しさん:03/09/23 21:23
このままSDK使い続けて支障ありませんか。
偉大なぺゾルト様を読み、SDK始めて1年が経過しました。
おかげで、MFCのコードを見ると吐き気が出ます。
このまま、SDKを使い続けても問題ありませんか。
それともMFCに移行したほうが良いですか。
PERLやPHPも便利で使える関数群があったので、普及したと個人的に感じてます。
猫プロの2/3位は、作成できます。
今後の方向性をご教授ください。
俺MFCから入ってSDKに移行してるんだけど?
MFCのデフォルトのアイコンが嫌いだからダメ
MFC使わずにSDKで作るとプログラム書いた,って気になる.
でもGUI使うちょっとしたツールならMFC使って手抜きに書いちゃう.
片っ端からVCL漬け‥‥∧||∧
>>840
道具を使うことが目的になっていますね。
843デフォルトの名無しさん:03/09/23 22:15
837です。
MFCは虫の息ですよね。CRTとか表示デバイス?
気になる 841さん
C#びるだーですか。でる、まさかC
言語は道具である。使えれば使う、使えなければ使わなくなる。
(C++最高 第2章)
そういう意味ではVCL2番目に使える道具ですよね。
1番目につかえる道具 C言語+ぺゾルト本
ATL(WTL)使ってみれば?
MFC使ってるんだよ
仕事なんだよ
VCL使いたいんだよ
画面いっぱいなんだよ
なんでMFCなんだよ
助けてくれよ
おまけに
VCなのに
C言語臭いことやってんだよ
規則で決まってるんだよ
テンプレート使わせろよ
ノートにVCの開発画面は辛い
コード表示部分が少なすぎ
848デフォルトの名無しさん:03/09/24 01:09
>>841は「妻みぐい2」中毒
849デフォルトの名無しさん:03/09/24 22:34
837です。
>>ノートにVCの開発画面は辛い
鷲は、15TFTでもつらいぞ。
寺ぱっとを立ち上げIDEと同時使用でつかってます。
あと、寺ぱっとタイムスタンプ付で8ポイント印刷して見てます。
sample_test.cpp 2000行 1本勝負です。
背景黒で行番号蜜柑色で//緑 かなり快適です。
VCに罪はなし、ノートでIDEなら16インチSXGAがいい。



850デフォルトの名無しさん:03/09/24 23:48
事情があって、C言語中で標準出力をファイルに接続したいの
ですが(リダイレクトではなく)、なにか良い方法はないでしょうか?
・こんなイメージのことがやりたい
 FILE* TempStdout = stdout;
 FILE* OutFile = fopen("Temp.txt", "w");
 stdout = OutFile;
 printf("abc");
 stdout = TempStdout;
 close(OutFile);

・事情
 1.最初コンソールアプリケーションで作っていたものを、
   Windowsアプリに変更した。
 2.コンソールアプリケーション時にデバッグ情報をprintf
   で出力していた。
 3.Windowsアプリケーションに持っていったときに2のprintf
   出力が見れなくなった。
   Dos窓から"appli.exe > Temp.txt"として起動したり色々
   試したがダメだった。
 4.printfはソース中に無数にあり、全てを変更したくない。

コンパイラはVC6++です。
何か良い方法があればお願いします。
>>850
つい最近、C++スレだか環境依存OKスレだかで似たような話があったはず。
852850:03/09/25 00:26
>>851
ありました。この辺りですかね。
http://pc2.2ch.net/test/read.cgi/tech/1059041347/191-212
この路線で試してみます。どうもありがとう。
標準ライブラリのdup/dup2は使えないかねー。
コンソールプログラムではよくやるんだけど。

// stdoutのコピーを作っておく
int copy = dup(fileno(stdout));
// stdoutの出力先を変更する
FILE *OutFile = fopen("Temp.txt", "w");
dup2(fileno(OutFile), fileno(stdout));
printf("write to file\n");
fflush(stdout);
fclose(OutFile);
// stdouを元に戻す
dup2(copy, fileno(stdout));
printf("write to stdout\n");
CreateFile(...)で作成されたファイルハンドルから
アクセスモードや共有モードを取得するにはどうしたら良いのでしょうか?
もう一つ。
このハンドルからFILE*に変換?するようなAPIってあるんですかね。
855 :03/09/25 04:21
>>850

freopen() でいいのでは。
>854
両方とも存在しない。
後者は確かにAPIには存在しないけどできないわけじゃない
858デフォルトの名無しさん:03/09/25 15:28
バイトを入れ替えるマクロかAPIを教えてくだ
winsockのhtons, htonl
_swab
861デフォルトの名無しさん:03/09/25 16:05
GetAsyncKeyState()関数が機能しません。
WinXPでは、うまく行くんですが、9x系ではうまく働きません。
開発環境はVisual stdio.netです。
それから、INPUT構造体とかも使えないんですが、何でですか?
プリプロセッサの結果では、そもそも展開されていないんです。
862デフォルトの名無しさん:03/09/25 16:34
構造体をプリプロセッサが展開?
863デフォルトの名無しさん:03/09/25 18:09
>>860
あり、でけますた
とんでもないDQSがやってくるな
DQS=ドキュソ?
そういや昔なんかの雑誌に「部下:MS-DOSって知ってますか?」
「上司:もすばーがー?」ってネタがあったな。
866デフォルトの名無しさん:03/09/25 21:00
CreateFile -> CreateFileMapping -> MapViewOfFile で EXE イメージをマップして
みたんですが ImageDirectoryEntryToData でまともにデータがとれないでつ.
MapViewOfFile でとってきたポインタは、ImageDirectoryEntryToData にわたせない
もんなんですか?
867850:03/09/25 22:00
>>853
これで行けました。

>>855
こちらもこんな感じで行けました。
freopen("Temp.txt", "w", stdout);

私の目的としては上記のどちらでも問題なさそうです。

なお、
>>852
こちらはただいま勉強中です。

レスくれた皆さんどうもありがとう。
>>866
実行ファイルは特別な方法でマップされる(ファイルアラインと
メモリアラインが異なる場合があるとか)
869デフォルトの名無しさん:03/09/26 10:18
InternetOpenUrlなのですがInternetSetOptionでタイムアウトをせっていしているのに
設定したタイムアウトでInternetOpenUrlから抜けてくれません。
何か特別な設定がひつようなのでしょうか?
IEのバージョンによってはタイムアウトが正常に作動しないから非同期モードを使うように。
というのがあった気がするが。
871デフォルトの名無しさん:03/09/26 10:36
>>870
ありがとうございます。
非同期モードに関する内容を書いてるHPを知っていたら教えていただきたいのですが、
873デフォルトの名無しさん:03/09/26 17:38
>>872
かなり参考になりました。
しかしコールバック関数で存在しない串とかを指定しても何故か
INTERNET_STATUS_HANDLE_CREATEDが走ってしまって・・
しかもINTERNET_ASYNC_RESULT構造体のdwResultにハンドルもどきの値が入っているっぽいので、
このハンドルでリードしてもエラーにはなりませんが、当然ながら読み込みは0バイトです。
うまい方法ありますか?
874デフォルトの名無しさん:03/09/26 17:51
あ、よくよくみてみるとINTERNET_STATUS_HANDLE_CREATEDって
InternetConnect 関数用っぽいですねこれ、
InternetOpenUrl関数で正常にハンドルを取得するにはコールバックでStatusが
何のときにすればいいのでしょうか?
875デフォルトの名無しさん:03/09/26 23:16
ツリービュー+リストビューのようなコントロールが欲しいのですが、どこかにありませんか?
CodeGuruにはあるんだけど、MFCを使ってるっぽいのがネックで…。
ネックになってるのは、私がMFCを使ったことないってこと以上に、
MFCだと初期のWin95では動作しないと聞いたからです。

誰かアドバイスをお願いします。
バージョンは?
>>876
Windows 95です。
878デフォルトの名無しさん:03/09/27 00:42
ウィンドウを作る前に、ウィンドウクラスの拡張領域にデータを書き込むことはできますか?
SetClassLongPtr の引数がなぜか hWnd なんですけど、他に何かいい関数はないんでしょうかね?
出来ないよ。
なぜか hWnd じゃなくて、hWnd が必要だからそうなってるんだろう。

ウィンドウが作られたら直ぐに必要になるデータだったら、
CreateWindow or CreateWindowEx の lpParam に
データへのポインタをセットして、
ウィンドウ作られるときに呼ばれる WM_NCCREATE or WM_CREATE
で CREATESTRUCT 構造体のlpCreateParams(=lpParam)から取り出せばよかろう。

そこで補足メモリに書き込んだら、それ以降のメッセージ処理で使える。
なぞなぞか?
誰か一休さん呼んでこい。
881デフォルトの名無しさん:03/09/27 19:15
ユーザがログオンしていない時だけ重い計算処理を実行するWindows 2000用の
サービスアプリケーションを作りたいのですが、方法が分からなく困っています。
GetUserName()でユーザ名を取得し、ユーザがログオンしているか調べる
事を考えたのですが、サービスアプリはSYSTEM 権限で実行されるためか、
ユーザがログオン中であってもそうでなくても、"SYSTEM"というユーザ名
が返ってきてしまいます。いい方法がお分かりの方がいらっしゃいましたら
ぜひご教授下さい。
882デフォルトの名無しさん:03/09/27 22:01
EnumWindowStation して OpenWindowStation して GetUserObjectInformation した
結果から判断するのかな。。。
OpenInputDesktop してGetUserObjectInformationすれば十分かな。。
883881:03/09/28 00:45
情報どうもありがとうございます!! >> 882
全く私の知らない命令でした。。
まずは、OpenInputDesktopからやってみました。
char DeskName[100]; 
DWORD WriteByte;
DWORD AccessFlag = STANDARD_RIGHTS_ALL | DESKTOP_CREATEMENU
 | DESKTOP_CREATEWINDOW | DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP
 | DESKTOP_WRITEOBJECTS | DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL
 | DESKTOP_JOURNALPLAYBACK| DESKTOP_JOURNALRECORD;
HDESK hDesk = OpenInputDesktop(DF_ALLOWOTHERACCOUNTHOOK, FALSE, AccessFlag);
GetUserObjectInformation(hDesk, UOI_NAME, DeskName,100, &WriteByte);
こんなかんじでよろしいでしょうか?
この方法では残念ながら、ユーザログオン時もログオフ時も
UOI_NAME = " " (半角 space 1文字) で同じでした。。
とりあえず、これからOpenWindowStation にチャレンジしてみようと思います。
884881:03/09/28 01:47
↑訂正
UOI_NAME = " "(半角 space 1文字)
ではなく、
DeskName = " "(半角 space 1文字)
でした。。
885881:03/09/28 02:30
EnumWindowStation を使ってみたのですが、callback されてくる情報は
ユーザログオン時とログオフ時どちらも同じ内容になってしまい、区別
がつかないようです。。。
何かアイデアがございましたら、ぜひ引き続きご教授お願い致します。
>>879
WM_NCCREATE がどんな状況でも一番最初に呼ばれると考えていいんでしょうか?
それより前の処理がどうでもいいものばかりなら、それで行きたいと思います。
>>886
確かバグでWM_GETMINMAXINFOが先に来ることがあったような。
MFCの真似してみたら? (自分にCBTフックをかけてHCBT_CREATEで
乗っ取る)
888デフォルトの名無しさん:03/09/28 12:19
どこで質問していいかわからないので、スレ違いであれば誘導して下さい。

ノートン・アンチウイルスのようにエクスプローラーの
ツールバーに常駐するアプリケーションを作成したいのですが
何について調べたらいいのでしょうか?キーワードみたいな
ものがあれば教えて下さい。

開発環境は VC2003 です。
>>888
検索キーワードは "C"。
たくさんあるから情報には困らないはず。
>>889
ありがとうございます。
それでも調べてみますが、ほかにも情報がありましたら教えてください。
891888 ◆8OHUrY3.ic :03/09/28 12:32
>>890は私ではありません。
>>888
日本語の情報源がかなり少ないから、大変だと思う。
とりあえず以下のページを試す(英語。VS2003は不可)
ttp://www.codeproject.com/atl/ietoolbartutorial.asp

次に以下のページを理解する。(日本語)
ttp://www.microsoft.com/japan/developer/library/jptech/MSDNNews/top.htm

前提条件として、C++とATL、COM、Win32APIの知識は絶対必要
これで無理ならあきらめる。
>>892
ATLの知識は必須ではないよね
無駄な根性があればCやアセンブラでも組めるし
894888 ◆8OHUrY3.ic :03/09/28 15:56
>>892
ありがとうございます。じっくり読んでみます。
>>886 さま、遅レス失礼
それほど Win32 API の経験が深くないのですが:
WndProc にどんな WM_* がどのような順序で来るのか、実地に調べる方法はいろいろ
やったことがあります。普通のデバッガーはこの目的には不適当ですので使いません。
記録をファイルに書いたり、named pipe で送る方法もあり得ます。元が UNIX 系なのもので(^^);
896デフォルトの名無しさん:03/09/28 21:59
お絵かきソフトを作成しようと考えているのですが、表示はウィンドウのDC
を使って作ったビットマップを使用するとして、実態の方はユーザーが指定した
色数やサイズを利用したいと考えております。 DCを使用する場合は色数など
を合わせたものでないと利用できないと記述されてましたが、実態がビットマップ
だとしても自前で描画処理をしてしまわないといけないでしょうか?

(ドキュメントを見ると、DCに付属するBITMAPの扱いに特化してるようで
 任意のBITMAPに適応したDCの作り方はないようでしたが。)
897デフォルトの名無しさん:03/09/28 22:43
>>896

「DIB」で検索してみよう。
898892:03/09/28 23:05
>>893
インターフェースがpureCで実装できると今知った。
ググってみると確かにサンプルがあるね。

>>888
C#が使えるならば、簡単に作る方法があるみたい。
ttp://www.codeproject.com/csharp/dotnetbandobjects.asp
>>895 (878?)
何をやりたいのか分からんが、
WM_*の順序に依存した処理を行うのは悪いアプリケーション。

誰も保障していないのでWindowsのバージョンによって
動かなくなることもありえる。

それでもというなら自分で調べて(spy++で簡単に分かる)
Windowsのバージョン依存を理解したうえでヤレ。
気にしなーぃ、気にしない、っと。

>>887
HCBT_CREATEWND
The system calls the hook procedure before sending the WM_CREATE or WM_NCCREATE
message to the window.

ってあるから、順序の問題は解決しないんじゃない?
MFCのソースは見てないけど、単にWndProc内で条件判断するオーバーヘッドを
取り除いてるだけとか。外してたらすまそ。

SetClassLongPtrしたいなら、とりあえずダミーのウィンドウを
一個作るっていうのはダメなのかな・・・。
(それ以前に、ウィンドウ作る前にSetClassLongPtrしたいっていうのが
よく分からない・・・。RegisterClassでやればいいのに。)
901879:03/09/29 04:01
なんかえらく面倒な話になってるし。
フックまで使うような処理かな?

ウィンドウが作成されたときに一番最初に
ウィンドウプロシージャに飛び込んでくるメッセージは
WM_NCCREATE だろう。

将来拡張されるかもしれないけど、今作っているアプリは
将来拡張されるメッセージの事は知らないので
間違って処理してしまうことはないだろう。

バグはバグ。ウィンドウズのバグなら認識してから対応しても
良いのでは?
ちなみに、この方法で 3.1 の時代から実装しているけど
問題になったことは無いな。

このシチュエーションではWM_GETMINMAXINFOは処理してないので、
これについては分からない。このメッセージだけ個別対応する方法もあるし。
そろそろ収束しそうな感があるけど,蛇足を一つだけ。

static InternalObject *obj = 0;
if (msg == WM_CREATE) {
 obj = new InternalObject();
 return 0;
}
if (msg == WM_GETMINMAXINFO)
 return obj->work(); // うほっ!!!!!!!!11ぬふあ

こんなコード書いてたら落ちるんで要注意ですね。
もちろん,常識あるプログラマならば

if (msg == WM_GETMINMAXINFO)
 if (obj) return obj->work();
  else  return 0;

みたくチェックするのは当たり前,と・・・
>>900
> before sending the WM_CREATE or WM_NCCREATE
でなんで解決しないの?
MFCが使ってるからMicrosoftはこれを破壊するような
仕様変更は(しない|できない)と思われ
>>901
補足メモリにWM_NCCREATEでthis入れて以降の
メッセージで使うという実装だと、
その前に別のメッセージがきたらディスパッチできない。
前スレBuild12も含めてhtml化されてるんで、次スレにテンプレ書くときは
よろしくです

Build12:http://pc2.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc2.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc2.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc2.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc2.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
    ※981で終っているがいいんか?
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html

このスレの2(>>2)を次スレのテンプレとする場合は、上記のURLに置き換えて
おいて下さい。

よろしく!
壁紙にhtmlを指定する方法を教えてくれ
SystemParametersInfo じゃダメだった…
>>901
漏れもフックは使ってない。
でも、WndProcでNCCREATEorCREATEに個別対応するなら、
結局やってることはフックと同じこと。どっちでもいいんじゃない?

>>903
全てのウィンドウメッセージの前に呼ばれるということが保証されてる
というのならまだしも、フックでメッセージの順番の問題を解決するのは考え方として変だと思う。

NCCREATEorCREATEが送られたどうかを判断するには
ウィンドウのextra memoryに0以外の値(ウィンドウをクラスで
実装してるんなら、CREATESTRUCT経由でthisとか)を書き込めばいい。
WndProcのGetWindowLongPtrして、戻り値が0の場合は初期化がまだだから、
DefWindowProcでも呼んどけばいいのでは。
っていうか、こんなのあえて書くこともないけど。
まちがいた。

×WndProcのGetWindowLongPtr
○WndProcでGetWindowLongPtr
最初にくるメッセージが何であれ、
ATLのメッセージハンドリングっぽくすればいいだろうに。

...
wcex.lpfnWndProc = WndProc1st; //最初のコールバックを設定。
...
Mgr::Instance().SetData( ::GetCurrentThreadId(), this ); // データ一時保存
CreateWindowEx( ... ); // ウィンドウ作成
...

LRESULT CALLBACK WndProc1st( .... )
{
 void * p = Mgr::Instance().GetData( ::GetCurrentThreadId() ); // データ取得
 SetWindowLongPtr( hWnd, GWLP_USERDATA, (LONG_PTR)p ); // なんか処理

 // WndProc を本来のものに変更
 SetWindowLongPtr( hWnd, GWLP_WNDPROC, (LONG_PTR)WndProc );
 return WndProc( hWnd, uMsg, wParam, lParam );
}

LRESULT CALLBACK WndProc( .... )
{
... // なんか処理
};
志村!thisー!
910デフォルトの名無しさん:03/09/29 23:11
質問をさせていただきたいと思います。
現在、プログラミングの練習も兼ねて、フリーソフトとしてよく出回っているような
デスクトップの壁紙チェンジャーを作りました。壁紙チェンジャーの作り方自体は多くの
ホームページで取り上げられている為、すぐに作成することが出来ました。
SystemParametersInfo( SPI_SETDESKWALLPAPER , 0 , FileName.c_str() , 0 );
↑を用いました。
その後、タイマーを使って高速に壁紙をチェンジすることで、擬似的なアニメーション壁紙
にしようとしたのですが、デスクトップの壁紙をチェンジ(リフレッシュ?)する毎に、
壁紙だけでなく、上にかぶさっているフォルダやファイルのアイコンまでリフレッシュされて
しまう為、アイコンがちらついてしまいます。(壁紙はちらつきません)
そこで、かぶさってるアイコン等は除いて、純粋に壁紙のみをリフレッシュする方法はないのでしょうか?
ネットでは見つけることが出来ませんでした。
開発環境はXP:C++Builder6です。お分かりになる方がいらっしゃいましたら
どうかよろしくお願いいたします。
>>910
そんなマニアックな機能が何の練習になるのかは知らないが、
GIFを壁紙に設定出来ないかな。
いくらなんでもタイマーで壁紙を再設定されるのはイヤだ。
912910:03/09/29 23:36
>911さん
GIFだと
・アクティブデスクトップにする必要がある(?)
・(アクティブデスクトップにすると)マウスでドラッグする範囲選択
 が出来なくなる(複数のアイコンをマウスで選択するとき等)
・色数が制限される
ので断念しました (^^;
たしかにマイナーですよね。
私は夜景が好きなので夜景画像を壁紙にしてるのですが、
例えば、東京の夜景を壁紙にしたときに、ビルの角についている赤色灯が
点滅したりするといい感じかなぁ・・・と思い、挑戦しました。
そーいやAVIを壁紙にするとか無かったっけ?
914910:03/09/29 23:51
>913さん
AVIを壁紙にするツールはありますね。
まぁ私の場合、赤色灯を点滅させたいだけなので、
画像ファイル数枚をスライドショーみたいにしてループさせればよいのですが、
AVIにしてもスライドショーにしても、
・マウスでドラッグする範囲選択が出来なくなる・・・
のが痛いですね。
でも、その程度のデメリットは我慢する必要があるのかもしれませんね(泣)
Windows95 以降のデスクトップは ListViewCtrl だから極論を言うと
こいつをフックしたら理論的には何でも出来るはずだが…
GetDC(NULL)で描画する手もあるナ。
http://techtips.belution.com/ja/vc/0037/
ここらへん、参考にならないかな。

ただ、そういう乱暴なソフト使いたくないかも…。
InternetExplorere もフックしてるけどな。
919デフォルトの名無しさん:03/09/30 05:30
色々、動作を記録して自動でやってくれるソフト(AutoClickとか)を試したんですが、
なぜか、目的のVBA(エミュ)でEnterキーが認識されなかったので、(テキストファイルとかはOK)
自分で作ろうと思いたち、やってみているのですが、序盤からいきなり躓きました。。

int main() {

mv_mouse(32000,60000);
click_left();
for(i=0;i<3;i++){
keybd_event(0x4D, 0, 0, 0);
keybd_event(0x4D, 0, KEYEVENTF_KEYUP, 0);
}

return 0;
}

と、こんな風に書いてみたんですが、画面に開いているテキストファイルに
mv_mouseでフォーカスして、(これは成功)文字を入力しようと試みてるんですが
全く入力されません。
何が悪いかとかわかるかた、教えてください。
環境は、XPでコンパイラはbccです。。
920910:03/09/30 09:23
>915-918さん
ご指摘いただいたキーワードまわりをいろいろ調べてみました。
どうやら私がやろうとしていることはプログラミングの練習としては
順序が間違っているようですね(^^;
たしかに実現できたとしても、かなり乱暴なソフトになってしまいそうです。
もうすこしハードルの低く、無難なものから積み上げていこうと思います。
今回は非常に勉強になりました。
ご助言くださった方々に感謝いたします。
921デフォルトの名無しさん:03/09/30 10:07
コンパイラのプロジェクト設定に、
「言語-ロケールID-0x411-日本語」みたいなのがあります。
多国語対応したい場合は、英語でしょうか?
それとも、言語を指定された時点で実行時にロケールID変更?
922デフォルトの名無しさん:03/09/30 10:10
JISをシフトJISに変換するAPIを教えてください
>>923
あり
925919:03/09/30 13:37
あれから全然進みません。
かなり考えたんですが、sendInputを使ってみようとも試みたんですが
ググって見つけた例文がVBのばかりだし、どなたかヒントだけでも
教えてください。。
926デフォルトの名無しさん:03/09/30 15:45
リストビューコントロールで、
項目が選択されたときボタンを有効に、
項目の選択が解除されたらボタンを無効にしようとしているのですが、

調べた限りでは、リストビューコントロールに、
項目が選択されたという通知メッセージがないようです

このような処理を実現するには、
どうしたら良いでしょうか?
>>920
壁紙だけど、SystemParametersInfo()で、設定を伝播させないという
フラグがあったような気がする…

そのフラグをセットしておくと、たしかに壁紙は変更されて表示されるが
設定が変更されたというイベントが他のウインドウに伝わらないので
たぶん再描画されないと思う

また、その副作用(?)として、セットした壁紙がウインドウズの
設定ファイルに保存されないので、次回再起動すると、壁紙が
別のものになっている(か無いか)とかいう経験をした気がする

気がする…ばかりでゴメン
うまくいったら結果を教えて。おれも興味あるので。
その壁紙の上で作業するとき、マシンパワーを贅沢に使いそうだね。
ここらへんがいわゆるスクリーンセーバ(もどき)と違う悩みの種かな
>>926
通知メッセージはNM_CLICKでOK
lParamがLPNMLISTVIEW構造体なので、
そのiItemメンバを調べる。-1なら選択解除。
>925
ドライバ制作からどうぞ
930926:03/09/30 17:06
>>928
レスありがとうございます。

試したところ、
NM_CLICKだけではなく、
キーボードで選択/選択解除した場合に、
NM_KEYDOWNの処理が必要となりそうです。

他に項目を選択する方法を思いつかないので、
これでいいとは思うのですが・・・
931デフォルトの名無しさん:03/09/30 17:41
FormatMessageなんですけど、

char arg1[] ="aaa";
LPVOID arg[] = { arg1 };

char buff[100];
FormatMessage( FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_ARGUMENT_ARRAY,
 NULL, IDS_STRING, 0, buff, 100, (va_list *)arg );

とすると、GetLastError() = 1813(指定されたリソースの種類がイメージ ファイルに見つかりません)
で失敗します。どうしてでしょうか?

CString buff;
buff.FormatMessage( IDS_STRING, arg1 );
は成功しました。
なんでNULLを渡してるねん
そこにはメッセージリソースを含むDLLの
モジュールハンドルを渡すんだよ
933931:03/09/30 18:04
自己解決。CWinApp::InitInstance (←MFC使ってます)で呼んでたのが
敗因っぽいです。他のとこに書いたら成功しますた。

>>932
>NULL を指定すると、現在のプロセスで動作しているアプリケーションの
>イメージファイルを検索対象にします
お騒がせしました。
934919:03/09/30 21:08
>>925
どういうことですか?
935デフォルトの名無しさん:03/10/01 10:56
非同期でInternetOpenして
InternetOpenUrlでInternetReadFileを行うとちゃんとソースを取得できません。
トレース実行するとそれなりにとれているので、InternetReadFileの前に待ち時間を入れると
ちょとはマシになるのですが、InternetReadFileが終ったってどう判断すればいいのですか?
コールバック関数でINTERNET_STATUS_RESPONSE_RECEIVEDでイベントをアレすると
InternetOpenUrlの時に1回くるので、いまいち判断がつかないので・・
>>935
1.非同期ならInternetReadFileExを使え。
2.このスレのログを全部読め。
937デフォルトの名無しさん:03/10/01 11:22
>>936
ううおおおおおお!!!
InternetReadFileExってAPIあったんですかあ!!
これググったんですけどプロトタイプがわからないです・・
教えてください
938デフォルトの名無しさん:03/10/01 11:26
>>937
嘘はいけません
ぐぐったら先頭にでてきましたよ
http://msdn.microsoft.com/library/en-us/wininet/wininet/internetreadfileex.asp
939デフォルトの名無しさん:03/10/01 11:59
>>938
いやごめん日本語のアレでググったらそれでない、んで後から全体でググってそれでてきた(;´Д`)
コンパイルは通ったんだけどどっかに使用例ってないですかねこれ
>>940
あり
942デフォルトの名無しさん:03/10/01 18:32
Win32で作ったEXEは、Pocket PCで動きますか?
943デフォルトの名無しさん:03/10/01 19:10
RegisterClassEx()で使われるWNDCLASSEXのそれぞれのメンバは
すべて用意しないといけないのでしょうか?

0にしておくことで、ウインドウズのデフォルトまかせにすることは
できないのでしょうか?

hIcon,hCursorなどは、デフォルトのままでいいや、と思うことが
けっこうあります。
944デフォルトの名無しさん:03/10/01 19:19
>>942
Win32用に作ったEXEは動かないよ。
該当CPUのPocketPC用にWin32で作ったものなら動く。(っていうか普通そうやって作る)
>>944
じゃ、コンパイラは限られてんだ。
BCBは駄目かい?
946デフォルトの名無しさん:03/10/01 19:21
>>944
クロスコンパイル?
947デフォルトの名無しさん:03/10/01 19:44
>>945
>>946
(少なくとも基本は)そうです。
948910:03/10/02 01:44
>>927さん  返事遅れてすいません。進んでませんが経過報告です。

>壁紙だけど、SystemParametersInfo()で、設定を伝播させないという
>フラグがあったような気がする…
SystemParametersInfoの第4引数をNULLにすると、iniに記録されず、
他のアプリケーションにも通知しない・・・とあります。
しかし、そうやってもちらつきます。
GetDC(NULL)を用いる方法は、SysListView32やウィンドウよりも手前に
描画する為、デスクトップのアイコンやウィンドウが隠れてしまいます。
SysListView32に描画する方法も、アイコンが隠れてしまう(と思われます)。
残された道はListViewにフックをかけてどうにかするしか思いつきません。
メッセージを横取りして、再描画させなく出来ればいいんですけどね。
プログラミングを始めて1週間も経ってないので、まだイマイチ把握できてません。
初めて作るソフトとしてはふさわしくなさそうです(^^;
949デフォルトの名無しさん:03/10/02 08:37
Win32ベースのPocketPC用コンパイラは、DEV.NETだけ?
950デフォルトの名無しさん:03/10/02 09:07
>>949
プラットフォームによるよ。
PocketPC2002なら、eVT3.0だし。
951デフォルトの名無しさん:03/10/02 10:34
非同期でInternetReadFileExを使ってのやり方はなんとなくわかったのですが、
普通にHPから非同期でソースを取得する場合InternetConnectの第2引数の
サーバー名には何を指定するのでしょうか?
FTPではないので
サーバー名に決まってるだろヴォケ
953デフォルトの名無しさん:03/10/02 11:39
ああすまんこのちんかすめ
InternetCrackUrlでアレしてホスト名アレしたらでけたわ
ああす まんこ の ちんかす め?
>>943
LoadIcon(NULL, IDI_APPLICATION)
LoadCursor(NULL, IDC_ARROW)
でシステムのアイコンとカーソルが使われるが。
ちなみにカーソルのデフォルトは砂時計だから
設定しないとちょっと困ると思う
ふと思ったんですが、CALLBACK関数ってウィンドウプロシージャァのほかに
何種類くらいあるんでしょうかねぇこれってトリビアにならないでしょうか
957デフォルトの名無しさん:03/10/02 13:20
プログラム内で、別のアプリケーションを
別のユーザ/パスワードで実行させたいのですが、
そのようなことが可能なAPIはありますでしょうか?

動作的にはRunasコマンドをイメージしています。
Runasでは実行時にパスワードが求められてしまう
(Runasコマンドの引数としてパスワードは指定できない)のと、
APIで可能であればそちらを使用したいと思いますので……

もし何かご存知の方おられましたら、ご教授いただけますようお願いいたします。。
なんでそこでrunas.exeをDependency Walkerで見てみる、ぐらいのことはしないのか。
>>958
CreateProcessAsUser()も知らないの?
>>959
Windows2000のrunas.exeが使用しているのはCreateProcessWithLogonWだが。
お返事ありがとうございます。
早速CreateProcessAsUserを調べてみて、
確かに別ユーザで実行されていることを確認しました。
ありがとうございました。

CreateProcessWithLogonWについては、
MSDN Onlineにはあるのですが、VC++6.0ではwinbase.hに定義されていませんでした。。
今更ながら、環境についての記述を忘れていて申し訳ありません。
ちなみに環境はWindowsXP+VC++6.0を使用しております。

……そして、CreateProcessAsUserで実行したプログラムが
エラーで落ちているのはまた別の話か……精進します。。

_| ̄|○
962927:03/10/02 19:42
>>948
がんばってくれ。
フックを使うよなウインドウズプログラムは俺も経験ないよ。

ちらちらするというのは、ウインドウズがシングルバッファで
壁紙を再描画しているからかもしれない。よくしらないけど。
たしかに、壁紙を激しく替えるなんて想定外、というのは妥当なんだろう。

初めてのだいざいには大きすぎる規模のプログラムかも。
とりあえず今は保留でもいいかもね。
でもさ、自分が欲しいものを自分で作るのってたのしいよね。
こういうときって、けっこう簡単に自分の限界(とおもってたところ)を
さっくり突破したりするよな…経験的に。
動機とかモチベーションとかって、でかいよな。
>>955
デフォルトが砂時計というわけではなく、カーソルが変化しないだけだと思う。
ウィンドウ枠でカーソルを矢印にして、ウィンドウ上に持ってくると矢印のままだし。
964デフォルトの名無しさん:03/10/03 15:08
MACアドレスを取得したいのですが、
95系、NT系のどちらでも使用できるAPIってありますでしょうか?
>>964
Del厨?
966デフォルトの名無しさん:03/10/03 19:45
このスレでいいのかどうか、アレなんですが。

シェルエクステンションのDLL作ってるんですけど
regsvr32 /u
しても、DLLがしばらく(最悪再起動するまで)「使用中」とかいって削除できませんよね?
明示的にアンロード(?)して、即削除可能にするってできないんでしょうか?
WIN64APIまだ?
>966

AlwaysUnloadDLL
969デフォルトの名無しさん:03/10/03 22:23
オンラインゲームなどでよくある簡単な個人認証を実装
したいのですがサンプルや情報のあるサイトか書籍を
ご存じでしたら教えてください。
よろしくお願いします


↑マルチに付き放置推奨。
971デフォルトの名無しさん:03/10/03 23:23
>>970
丸一日たったけどダメだったので、仕方なかったのです
急なリクエストがはいっちゃって、勘弁してください
どなたかヒントお願いします!
>>971
マルチ:
 何の状況説明も無く複数のスレに同じ質問を投げる。
 それぞれのスレに回答がつくが、一番早かったところ意外は徒労に終わり、大概礼も言われることなくむなしく流れていく。

移動:
 前のスレでレスがつかなかったので、移動する旨と移動してきた旨をちゃんと書く。
 前スレでその質問を見たやつも移動先のスレに来て回答すればいいので労力が無駄になることは無い。

無視されてるMFCスレの237が良い例だな。

切羽詰った状況を自分のマナーとモラルが無いことのいい訳にするなや。
>>968 それ、レジストリのヤシでしょ?効果なかった。
>973

俺の場合は効果はあったけどな。

エクスプローラがそのDLL使ってんじゃない?
デバッグするんだったらIEからシェルエクステンションを
ロードするようにすれば少しは違うかも
とりあえずエクスプローラ落としてみるってのはどうだ?
976名無し@沢村:03/10/04 12:50
977デフォルトの名無しさん:03/10/04 21:59
本人も謝ってるんだからさ、誰か969に答えてやったらどうだ?
知っていたら俺が答えてやってもよいんだけど、
誰かヘルプよろしく
本人キタ━━━━━(゚(゚∀(゚∀゚(☆∀☆)゚∀゚)∀゚)゚)━━━━━!!
自演までマルチとは。
盛り上がってるとこスンマソン。
C言語なら私に聞け! Part 65
http://pc2.2ch.net/test/read.cgi/tech/1064234533/
から誘導されてきますた。

ファイルの扱いの中でも、
wavの読み込み(波形表示や編集)・書き込み(入力によるwav作成)
などはどういう風にやればできるようになるでしょうか?
現時点ではがんばって調べてヘッダがわかったぐらいです。
よろしくおねがいします。
>>971
981を見習え

>>981
俺も良くわからんのだけど
http://msdn.microsoft.com/library/en-us/multimed/htm/_win32_multimedia_functions.asp?frame=true
あたりでどうにかなるんじゃない?
最新のMSDN Library持ってるなら日本語の説明も付いてる。

他の人がもっと的確なレスつけてくれたらそれで良いんだが、
もし自力でうまくいったら触りだけでも書き残してってくれ。
>>981
ヘッダが分かったら,後はdataチャンクにPCMのバイトストリームが入ってるだけ。
ストリームフォーマットは,リトルエンディアンでチャンネル順にパックされてる。

とりあえず,PCM各サンプルのプロット -つまり,波形の表示- からはじめたら?
984デフォルトの名無しさん:03/10/05 00:09
ある子ウィンドウが、親ウィンドウの移動に追従するにはどうすればよいのでしょうか。

親ウィンドウのタイトルバーをドラッグして移動する際に、子ウィンドウも一緒に移動して欲しいのですが・・・。
よく見かける、アクティブウィンドウのタイトルバーに座って、移動も一緒に追従するアプリはどのようにして実現しているのでしょうか。

開発環境はWindows Me,VC++6.0です。
よろしくお願いします。
>>984
・フックしこんで対象ウィンドウにWM_WINDOWPOSCHANGEDあたりが来たら
それに合わせて自分も移動する。
・定期的に対象ウィンドウの位置を調べて(以下略
986984:03/10/05 01:54
できました!
>>985さん超感謝ですヽ(TーT)ノ
本当にどんなメッセージを使うのか、見当もつかなかったので・・・

今回はウィンドウが親子関係なのでフックしたりはしなくても済みました(´ー`)
親のWM_WINDOWPOSCHANGEDを受けて、子にウィンドウが移動した旨、伝えることで実現できました。
有難うございます。
次スレ立てるんだったら、そろそろかな。
立てるときは>>2だけでなく>>904も夜露氏句
989981:03/10/05 11:11
>>982>>983
レスありがとうございます。

>>983
その、プロットですが手順の目処もたちません。スキルが高くないので・・・。
どこか勉強できるページなどないでしょうか?
どうぞよろしくお願いします。
>>989
ひょっとしてwaveファイル云々じゃなくて、
ウィンドウに表示する方法が分からないってこと?
991 ◆ncKvmqq0Bs :03/10/05 13:13
よーし、ちょっくら次スレ立ててくるわ。
992 ◆ncKvmqq0Bs :03/10/05 13:36
立てた〜

Win32API質問箱 Build14
http://pc2.2ch.net/test/read.cgi/tech/1065328397/


以下1000取りをドーゾ
993904=987:03/10/05 13:39
>>992
乙 & ありがとうございます!

   次  ス  レ  が  立  ち  ま  す  た  〜

   Win32API質問箱 Build14
   http://pc2.2ch.net/test/read.cgi/tech/1065328397/l50
995デフォルトの名無しさん:03/10/05 13:52
ShellExecuteという関数を使って
関連付けがなされているファイルを
起動できると聞きました
プログラム中にwindows.hがIncludeされていて
windows.hの中にshellapi.hがIncludeされています
shellapiの中に
SHSTDAPI_(HINSTANCE) ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
#define ShellExecute ShellExecuteA
と書かれていてぐぐって見たのですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp
くらいしかなくどうやって使ったらいいかわかりません
具体的にはC:\testフォルダの中のaaa.xlsを指定すると
エクセルが立ち上がってaaa.xlsが読み込まれるというようにしたいです
windows2000+BCC551です
どうかよろしくお願いします
------------------------------ 終 了 ! ------------------------------
以降は次スレで
  Win32API質問箱 Build14
  http://pc2.2ch.net/test/read.cgi/tech/1065328397/l50


残り5
(・∀・∀・)ヌッヘッホー
# 質問内容はノータッチ...

>>995
次スレが立ってるから、あらためてそこに投稿されるとよいかと。
1000
1000は俺
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。