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


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

Win32API 質問箱 Build4
751 名前:745 :02/07/19 23:28
>>748
ダメでした。。。sageときます。。。

>>749
う、何かそんな感じしてきたけどきつい仕様やな。。。
通知メッセージ(CBN_EDITUPDATE)とか使ってチマチマやらんとあかんのかな。。。
日本人のみんなは困ってないのかな?

752 名前:デフォルトの名無しさん :02/07/20 00:52
Win98SEなんですが
autoexec.batの中でUSB-FDを認識させたいんですが、
何かよい方法ありますでしょうか?

753 名前:デフォルトの名無しさん :02/07/20 01:01
>>752
不可能

754 名前:デフォルトの名無しさん :02/07/20 06:17
だいたいautoexec.batの中ではWin32 APIは使えないんだから
スレ違いの予感

755 名前:デフォルトの名無しさん :02/07/20 12:27
>>754
>autoexec.batの中ではWin32 API
とりあえず意味不明として、

autoexecが動くプロセスってリアルモードなの?

756 名前:デフォルトの名無しさん :02/07/20 12:59
>>755
NT系じゃautoexec.batは意味ないから95系なわけだが、リアルモードっつーか、
Windowsのカーネルがロードされる前だからWin32 APIが使えないのは当然だろ
う。


757 名前:デフォルトの名無しさん :02/07/20 13:30
>>752
とりあえず↓イテコイ
ttp://homepage2.nifty.com/winfaq/index.html

758 名前:デフォルトの名無しさん :02/07/20 21:31
wininetのラッパーDLLを作っています。
現段階で全コールで全パラメータをベタ渡しでwininetにスルーしています。

多くのアプリは動作するのですが、IEが動作しません。

IEを起動するとアクセスを行い実際にコンテンツを表示する段階でurlmon.dllが例外を吐きます。
例外時のスタックは kernel32->MSHTML->urlmon でした。

InternetSetStatusCallbackがクサいのですが、例外発生までコールバック関数は1度だけ指定され、
コールバック関数自体は何度か正常に通過しているようです。

スルーで渡すときの注意点なんかないでしょうか?

759 名前:デフォルトの名無しさん :02/07/20 23:34
ラッパーじゃなくて置き換え?

760 名前:デフォルトの名無しさん :02/07/20 23:38
あ、置き換えてやってます;
オリジナルのwininetをリネームして、LoadLibraryしてます

このへんも上手い処理の仕方があればいいんですが、
起動時にwininet読まれちゃうんで…

761 名前:デフォルトの名無しさん :02/07/21 00:18
kageのソースは?

762 名前:758 :02/07/21 02:03
なるほど、見てみましたがいろいろやってますねぇ。
APIのフックとかそちらの方で対処できそうです。
ありがとうございました

763 名前:デフォルトの名無しさん :02/07/21 08:10
つーか、どこかにミスがあるんでしょ。
手作業でラッピングしてるなら、なおさら。

764 名前:デフォルトの名無しさん :02/07/21 14:54
あんまり初心者の質問で恐縮なのですが、
MessageBox や Dialog 関数のパラメーターで親ウインドウのハンドル
をNULLにできるのでしょうか?
なんか機械によっては、旨く動かなかったりするので。

765 名前:デフォルトの名無しさん :02/07/21 15:56
>>764
>なんか機械によっては、旨く動かなかったりするので。

できないんだろ。

766 名前:752 :02/07/21 16:02
753-757 どもでした。
逝ってきます。

767 名前:はぐれ :02/07/21 21:55
はぐれJAVAプログラマです
仕事で作れっていわれたアプリで
システムフック、グローバルフックを使って全マウスクリックをフックする必要がありそうなんですが
どーにもWIN32わけわかんないっす(泣)
いろいろ調べてみてるんですが
どこかにサンプルソースとか落ちてるところないでしょうか
ご存知の方あれば是非・・・

768 名前:はぐれ(767) :02/07/21 21:56
ちなみに言語はCを使っております。

769 名前:デフォルトの名無しさん :02/07/21 22:25
>>767
SetWindowsHookExでぐーぐってみるとか?

770 名前:デフォルトの名無しさん :02/07/21 23:14
>>767
(・∀・)猫イケ→ ttp://kumei.ne.jp/c_lang/sdk2/sdk_162.htm

771 名前:デフォルトの名無しさん :02/07/21 23:17
>>764
できるよ

772 名前:デフォルトの名無しさん :02/07/22 00:13
Windows 2000/XP などで、モデムやVPN接続を行った際に、画面右下のタスクトレイに
接続状況を示すアイコンが表示されます。
アイコンをダブルクリックすると、その接続が開始されてから転送されたデータ
(ダウンロード / アップロード) のバイト数が表示されますが、
外部プログラムからリアルタイムで特定のダイヤルアップ接続の転送量を
取得することはできないでしょうか?

773 名前:デフォルトの名無しさん :02/07/22 00:56
>>772 レジストリから取得
NT,2000系 →HKEY_PERFORMANCE_DATA
95,98,me系→HKEY_DYN_DATA\PerfStats

774 名前:デフォルトの名無しさん :02/07/22 18:43
>>773
XP では HKEY_PERFORMANCE_DATA が存在しないようです

775 名前:デフォルトの名無しさん :02/07/23 01:21
winInetを使って色々と遊んでいたときふと思ったんですが
ロボット型サーチエンジンって、ただHyperLinkをたどっているだけなんでしょうか?
なんか、勝手にディレクトリを下がっていって検索しているような
気がするんですが、そーいう関数が見あたらないんです。
(FTPでディレクトリを見るのはわかるけど・・・・)
いったい、どんなプロトコルを使っているんでしょうか?
winInetでおままごと程度のサーチエンジン作れますか?


776 名前:デフォルトの名無しさん :02/07/23 01:30
リンクをたどっているだけ。
ディレクトリの中身を見れない設定ならたどる手段は総当たりしかない

777 名前:775 :02/07/23 02:47
>>776
うはっ、やっぱりLinkたどっているだけっすか。
そんなこと出来たら、セキュリティー的にまずいとはおもうけど
そんなもんなんですね。勉強になりましたです。

スリーセブンGet!!


778 名前:デフォルトの名無しさん :02/07/23 02:54
ちーん、ぢゃらぢゃらぢゃら…

779 名前:デフォルトの名無しさん :02/07/23 13:55
フォーカスが他のウィンドウに移ったらアクション起こしたいんだけど
何をいつから監視すればいいんですか?

780 名前:デフォルトの名無しさん :02/07/23 14:01
好きなときからWM_ACTIVATEを監視すればいい。


781 名前:デフォルトの名無しさん :02/07/24 20:46
>66
> GetRandomRgn(hDC, rgn, SYSRGN);

で特定のウィンドウハンドル(hDCの元)のリージョンを取得できたのですが、
クライアント領域(?)になってしまうようです。
タイトルバーやメニューも含めて取得する方法はないですかね?

782 名前:デフォルトの名無しさん :02/07/24 20:48
CreateDIBSectionってウィンドウのビットマップ取得にも使える?
GetDIBitsが遅いのでCreateDIBSectionが使えないかと思ってるんだが。
ぐぐるしても表示に関する事ばかりで見当たらない。
駅スパートの方々教えてください。おながいします。

783 名前:デフォルトの名無しさん :02/07/24 22:08
hDC が GetDC した DC だったり、ってことはないですよね。


784 名前:デフォルトの名無しさん :02/07/24 22:48
USBのシリアル情報って取れますか?
マウスからパソコンに送られて来る
波形を表示させるといったことはできるでしょうか?
特に何に使うというわけでもなく、興味本位なのですが。
良かったら教えてください。

785 名前:デフォルトの名無しさん :02/07/24 23:01
DDK

786 名前:デフォルトの名無しさん :02/07/24 23:07
正直すまんが・・・
GetGlyphOutlineでビットマップ作るんだが
win95の時に定数GGO_GRAY2_BITMAPいれると戻り値にエラー値が
戻ってくるんだがどうしてで?
CGO_BITMAPでは普通にビットマップとれるのだが
おすえてください


787 名前:デフォルトの名無しさん :02/07/25 00:23
「名前をつけて保存」ダイアログの作り方がわかりません。
「ファイルを開く」ダイアログとは別物なのでしょうか?
MFCでのやり方はわかるのですが

788 名前:デフォルトの名無しさん :02/07/25 01:01
名前とフラグを変えるだけ

789 名前:デフォルトの名無しさん :02/07/25 09:51
>>787
GetSaveFileName

790 名前:デフォルトの名無しさん :02/07/25 11:56
>783
> hDC が GetDC した DC だったり、ってことはないですよね。

初心者で何の事か分からなかったのですが、
GetDCExでDCX_WINDOWを指定してDCを取得したところ
思ったようになりました。
ありがとうございました。


791 名前:デフォルトの名無しさん :02/07/25 13:17
Win32 API でディレクトリの更新日時を
変更したいのですが、うまく行きません。
(環境は Visual C++ 6.0 / Service Pack 入れてないまま 汗)

普通のファイルの場合は CreateFile でハンドルを取得して、
GetFileTime & SetFileTime で問題なく行えたのですが、
ディレクトリに対して CreateFile を使うと
アクセス拒否と言うエラーが出て失敗します。

Windows95/98 でディレクトリのハンドルを取得するには
どうやったら良いのでしょうか?
プラットフォームSDKを読む限りだと、
NT では FILE_FLAG_BACKPUP_SEMANTICS を指定すると
うまく行くようなのですが、95/98 の場合について触れていません。
95/98 では無理と言う事でしょうか?
その場合、他にディレクトリのハンドルを取得する方法は有るのでしょうか。

「ディレクトリ ハンドル CreateFile」で検索かけてみたのですが、
具体的にこれでディレクトリを開いてる話を見かけなかったので
こちらでお聞きしました。どうかよろしくお願いします。

792 名前:デフォルトの名無しさん :02/07/25 13:47
> 95/98 では無理と言う事でしょうか?
ま、そういうことだ。あきらめな。

793 名前:デフォルトの名無しさん :02/07/25 13:59
>>792
マジですか?(汗)
鬱だ。数日無駄に過ごした。

ではディレクトリの更新日時とかを 95/98 で
変更するのって不可能なんでしょうか?

ともかくお答えありがとうございました。


794 名前:デフォルトの名無しさん :02/07/25 14:21
ddk使って、アクセスドライバ書くしかない

795 名前:デフォルトの名無しさん :02/07/25 14:39
DDK を使わずとも DeviceIoControl() でダイレクトディスクアクセスは可能。
ディレクトリのタイムスタンプの変更のためにそこまでする価値があるかは激しく疑問だが。(w

796 名前:デフォルトの名無しさん :02/07/25 18:45
>>793
一瞬だけSetSystemTime()で日付変更してディレクトリを作ったら元に戻す
素人にはお薦め出来ない

それはそれとして256色画面での正しいRealizePalette()の使い方しりませんか?
いろいろサイトを回っても諸説紛々で動いたり動かなかったりするんですが…
特にPC-9821の256色専用マシンだと正常に表示されないことが多いです

797 名前:デフォルトの名無しさん :02/07/25 22:27
直接メッセージを扱わずに、キーボードの状態変化を検出する方法って
なにかありますか?なにかキーが入力されたらEventをセットしてくれるような
API(DirectInput以外で)を探しているんですが。

798 名前:デフォルトの名無しさん :02/07/25 23:07
>>774
pviewが動いてるからあると思うんだが…
>>791
16ビットDLL書いてサンクダウンして
DOSファンクション71xxhを呼び出すのが唯一の公式な方法
>>796
まずは「諸説」をここに書いてみれ

799 名前:デフォルトの名無しさん :02/07/25 23:13
> なにかキーが入力されたらEventをセットしてくれるようなAPI
キーボードメッセージ
つーか何がしたいんだ?

800 名前:797 :02/07/25 23:15
>>799
DirectInputのSetEventNotification()に相当する非DirectInputAPIが
欲しかったのです

801 名前:デフォルトの名無しさん :02/07/25 23:22
>>800
キーボードフックして、自分でイベントをセットするなりすれば?

802 名前:デフォルトの名無しさん :02/07/25 23:24
>>801
ありがとう。やってみます

803 名前:デフォルトの名無しさん :02/07/25 23:49
791(=793) です。

皆さん、お答えありがとうございました。

当方素人なので Win32API でサックリ出来ないようですし、
どうも諦めっぽいですね。


804 名前:デフォルトの名無しさん :02/07/26 00:54
>>798
そうか、サンクという方法もあったか。
問題は 16bit コンパイラをどうやって入手するかだが、WinME DDK を DL すれば OK だな。
int 21h, AX=7143h を使えばいいわけだが、>>796 の場合とは微妙に結果が違ったりする。


805 名前:デフォルトの名無しさん :02/07/26 11:08
ACPIに対応してるシステムで電源ボタンを押下するとShutDownとか出来ますよね。
それで、ACPIを使用して「何かのキーを押下した時にShutDownする」ような仕組みを
組み込みたいのですが、ACPIの内部関数(?)及びその使用方法等をご存知ありませんか?

Win2K,VC++6.0(SP5)で作っているのですが...
よろしくお願いします。m(_ _)m

806 名前:デフォルトの名無しさん :02/07/26 11:13
SetSystemPowerState

807 名前:デフォルトの名無しさん :02/07/26 11:13
スタンバイじゃなくてシャットダウンか。
ExitWindowsEx
つーかACPIなんて使うか?

808 名前:805 :02/07/26 11:28
レスどうもです。
いや、普通に電源を落としても面白くないんで、
ちょっと変わった事をしてみようかと思いまして...
ACPIの内部関数等が判れば面白いコトが出来るかなぁと

809 名前:デフォルトの名無しさん :02/07/26 11:30
こんにちは
インターネットの設定の信頼済みサイトや危険なサイトを、
プログラムで編集するにはどうしたらよいでしょうか。

810 名前:デフォルトの名無しさん :02/07/26 12:05
>>809
レジストリをいじれば?
専用APIがあるかもしれないけど

811 名前:デフォルトの名無しさん :02/07/26 12:10
こんにちわ、結城浩です。

C++プログラミングレッスン応用編へようこそ。

812 名前:デフォルトの名無しさん :02/07/26 12:31
>>810
自分もそう思って検索してみたんだけど発見できず。
知ってたら教えてちょうだい。

813 名前:デフォルトの名無しさん :02/07/26 15:03
>>811
Perlいじっててください

814 名前:デフォルトの名無しさん :02/07/26 19:31
>>812
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains


815 名前:デフォルトの名無しさん :02/07/26 23:12
キーボードから文字としての入力をしないときは、TranslateMessageを呼ばなくてもいいですか?


816 名前:デフォルトの名無しさん :02/07/28 05:18
>815
alt+スペースとかも使わないんであれば、いいんじゃねーの。

817 名前:デフォルトの名無しさん :02/07/28 20:33
WM_CHARを使わないのなら問題ない。
WM_KEYDOWN系は普通に送られてくる。

818 名前:デフォルトの名無しさん :02/07/28 22:40
>>816-817
ありがとう。

819 名前:812 :02/07/29 14:34
>>814
ありがたや
レジストリの見れるマシンが手に入り次第調べてみます。

820 名前:デフォルトの名無しさん :02/07/29 14:36
>>819
レジストリの見れんマシンってどんなのよ?

821 名前:関係なくてごめんなさい :02/07/29 14:41
2chでこの前アドのなかにに「yurei」ってのが入ったアド踏んじゃったら
「あなたに憑依しました」って出てきたんすけどなんか問題アリですかね?

822 名前:デフォルトの名無しさん :02/07/29 14:45
関係ないってわかってて聞くアナタに問題アリ

823 名前:デフォルトの名無しさん :02/07/29 14:59
>>820
いま使ってるやつ制限かけられててregeditが起動できない

824 名前:API学くん :02/07/29 17:08
質問です。
レバーコントロールを作っているのですが、レバーコントロールの幅を指定する
ことはできないのでしょうか?
レバーコントロールを作成するとツールバーのように上に左端から右端まで全部
占めてしまいますよね。それを右端だけ常に空けるようにしたいのです。
レバーコントロールをCreateWindowEx()で作成した時に、これの引数でウィンドウの
幅を指定する場所があるのですが、ここで指定しても無効みたいです。
どなたか教えて下さい。よろしくお願いします。


825 名前:デフォルトの名無しさん :02/07/29 17:24
レバーもうひとつくればいいじゃん。

826 名前:API学くん :02/07/29 17:32
>>825
ありがとうございます。もう少し詳しくお願いします。
レバーを二つ作ったとして、この二つを座標で指定する事は出来るの
ですか?
もしできるなら指定方法をおしえてください。お願いします。

827 名前:デフォルトの名無しさん :02/07/29 21:33
PrintDlg() したときに、

○現在のページ
○ページ指定 [        ]

が網掛けになってしまうのですが、何ででしょう?
pd.Flags は

 PD_ALLPAGES | PD_CURRENTPAGE |
 PD_RETURNDC | PD_USEDEVMODECOPIESANDCOLLATE

って感じなんですが。。。
ちなみにプラットフォームは Windows 2000 です。

828 名前:デフォルトの名無しさん :02/07/30 00:19
自分がCreateProcessしたプロセスが持つ
WindowのWndProc書き換えるにはどうしたら良いですか?

FindWindowでキャプションからHWND取得して
SetClassLongとかSetWindowLongではダメでした。

829 名前:デフォルトの名無しさん :02/07/30 00:23
プロセスにコードを潜り込ませるとか、
フックを仕込んでその中で置き換えるとか

830 名前:828 :02/07/30 00:36
>>829
プロセスにコード潜り込ませる場合は
そのプロセスのソースコードレベルで潜りこませるということですか?
派生する側のプロセスのコードはいじれないので
フックで何とかやってみようかとも思っていたのですが、
特定のWindow宛てのメッセージだけ置き換えるにはどうすればよいでしょう?

プログラム本体からフック用DLLにHWNDを渡してやっても、
フック用DLLのフックProcではHWNDが設定されなくて
HWND同士の比較が出来ませんでした。

自分で作った子プロセスなのに。はがゆい。

831 名前:828 :02/07/30 00:38
×派生する側の→○派生後の

832 名前:デフォルトの名無しさん :02/07/30 00:58
>>830
>ソースコードレベルで
ちゃう。
対象プロセスのメモリを書き換える。
kageがやってるから参考に汁

>プログラム本体からフック用DLLにHWNDを渡してやっても、
きちんと共有メモリにしてるか?
フックで刷り込まれたdllは、当然対象のメモリ空間で動作する。


833 名前:デフォルトの名無しさん :02/07/30 01:30
>>832
なるほど。DLLの方は普通にグローバルに宣言すると、
それぞれでメモリとっちゃうんですね。
>対象プロセスのメモリを書き換える。
ってのも、ちょっと勉強してみます。ありがとうございました。


834 名前:デフォルトの名無しさん :02/07/30 08:41
>>827
nMinPageとnMaxPageメンバが同じ値にセットされてないか?


835 名前:デフォルトの名無しさん :02/07/30 11:51
プロセスIDからそのプロセスのユーザ名を取得するにはどうすればいいの?

836 名前:デフォルトの名無しさん :02/07/30 13:15
>>834
そうみたいでした。どもサンクスコです。
んで、「現在のページ」が網掛けなのは PrintDlg() では致し方ないことなのですね?

837 名前:デフォルトの名無しさん :02/07/30 14:06
リージョン設定についてお聞きします。

今、
IniRgnion()でリージョンハンドラを初期化し、その後
SetRegion()でリージョンを設定し、画面を変形後、ソフトの終了時
DelRegion()でリージョンを開放しています。
関数内部で使用されているhRgnEye[], hRngEyeIn[], hRgnEyeOut[], hRgnWinIn, hRgnWinOut
はグローバル変数です。

リージョンハンドラはグローバル変数で宣言しており、SetRegion()が呼ばれる前に
必ずIniRegin()で初期化しているのになぜ個々の関数内で改めて初期化しなおさねば
ならならいのでしょうか?


838 名前:837 :02/07/30 14:07
上記のコードです
BOOL SetRegion( HWND hWnd, RECT *EyesWin, BORDER *Border)
{
SetRgnEye( hWnd, Border);

if( SysConfig.ResizeWindow){// ここは常にfalseとしている
SetRgnWnd( hWnd, EyesWin);
CombineRgn( hRgn, hRgn, hRgnWnd, RGN_OR);
}
SetWindowRgn( hWnd, hRgn, TRUE);

return TRUE;
}

HRGN SetRgnEye( HWND hWnd, BORDER *Border)
{
int i;
//RECT Rect;// これと


//SetRectEmpty( &Rect);// これのコメントアウトをはずすとうまく行く

/* リージョン設定*/
hRgn = CreateRectRgnIndirect( &Rect);
for( i = 0; i < 2; i++){
//hRgnEye[i] = CreateRectRgnIndirect( &Rect);// このコメントも
hRgnEyeOut[i] = CreateEllipticRgn( /*略*/);
hRgnEyeIn[i] = CreateEllipticRgn( /*略*/);
CombineRgn( hRgnEye[i], hRgnEyeOut[i], hRgnEyeIn[i], RGN_DIFF);
}
CombineRgn( hRgn, hRgnEye[0], hRgnEye[1], RGN_OR);

return hRgn;
}


839 名前:837 :02/07/30 14:08
その続きです
HRGN SetRgnWnd( HWND hWnd, RECT *WinEyes)
{
long Width, Height;/* Window 枠サイズ*/
POINT Polygon[20];/* Window 飾り枠*/
//RECT Rect;// これと

Width = WinEyes->right - WinEyes->left;
Height = WinEyes->bottom - WinEyes->top;

/* Window飾り枠リージョンデータ設定*/
Polygon[ 0].x = 10; Polygon[ 0].y = 0;
// 長くて投稿できないので略します
Polygon[19].x = 10; Polygon[19].y = 5;

/* リージョン設定*/
//hRgn = CreateRectRgnIndirect( &Rect);// これのコメントをはずすとうまく行く
hRgnWndIn = CreatePolygonRgn( Polygon, 20, WINDING);
hRgnWndOut = CreateRectRgn( 0, 0, Width, Height);
CombineRgn( hRgnWnd, hRgnWndOut, hRgnWndIn, RGN_DIFF);
return hRgnWnd;
}


840 名前:API学くん :02/07/30 18:06
質問です。
CreateToolbarEx()で二つのツールバーを作ったのですが2列にならずに
一列に重なってしまいました。
位置を指定するメッセージか何かを探したのですが見当たりません。
レバーコントロールを使えば実現できますが、使わなくてもツールバー二列は
このような単純な方法で実現可能かどうか知りたいです。
よろしくお願いします、


841 名前:API学くん :02/07/30 18:29
>>840の続きです
MoveWindow()でツールバーを移動させようとしましたが、全く変化しません。
もしかしてツールバーは移動不可ということなのでしょうか?

842 名前:デフォルトの名無しさん :02/07/30 20:59
>>835
OpenProcessでプロセスハンドルを開いてから
セキュリティAPIでゴニョゴニョ
>>836
nMinPageとnMaxPageを違う値にすればいいんでないの?
>>837
838はRectの定義をコメントアウトしたままではコンパイルエラーになると思うが?
839のhRgnWndはどこで定義されてるの? 長くて省略の中?
>>840-841
レバー以前のツールバーはそのような複雑な使用方法を
まったく想定していない。

843 名前:837 :02/07/30 22:09
>>842
うまく動作しないときは
hRgn = CreateRectRgnIndirect( &Rect);
の行もコメントアウトです
hWndWndはインクルードしているヘッダファイルにグローバル変数として宣言しています。
ヘッダでは同じ変数を多重宣言しないように
#if !defined( hoge)
#define hoge
// 宣言いろいろ
#else
// extern 宣言いろいろ
#endif
のようにしています。

844 名前:837 :02/07/30 22:59
長々と読むのはつらいので要点だけ書きますと、
・リージョンハンドラはグローバル変数で宣言している
・リージョンの初期化は初期化関数を用意して最初に初期化している
・リージョンの設定は設定関数を用意して初期化後設定している
・リージョンはソフトの終了直前に開放している
と言うプログラムで、
・設定関数内でCombineRgn()関数を使うとCombineできない(Combine後のリージョンハンドラは当然初期化済)
・設定関数内でCombineRgn()関数を使う前にCreateRgnRect()などで初期化するルーチンを追加するとCombineできる
と言う問題がある。
これは何故か?ということです。私のCの知識ではどちらも同じ挙動を示す(正しくCombineできる)はずですが、
前者ではCombineできません。HRGNなる型はMicrosoftの特例による制限があるのでしょうか?

845 名前:デフォルトの名無しさん :02/07/30 23:09
>>836
PRINTDLGEX構造体を使う

846 名前:デフォルトの名無しさん :02/07/30 23:17
>>837
SetWindowRgnしたリージョンハンドルはシステムの管理下に
おかれるから以後勝手に使っちゃだめ。まずMSDNをちゃんと探せ。
> After a successful call to SetWindowRgn, the system owns
> the region specified by the region handle hRgn. The system
> does not make a copy of the region. Thus, you should not
> make any further function calls with this region handle.

あとハンドルとハンドラはぜんぜん意味が違うから
ちゃんと使い分けろ

847 名前:デフォルトの名無しさん :02/07/30 23:19
逆に言えばSetWindowRgnしなければ一回初期化したものを
ずっと使いまわしてもぜんぜん問題ない。別にHRGNだけが
特別なわけではない。似たような例としてはSetClipboardData
に渡すHGLOBALがある。
こういうのは特別な例だからMSDNを読めばちゃんと書いてあるよ。

848 名前:837 :02/07/30 23:20
>SetWindowRgnしたリージョンハンドルはシステムの管理下に
>おかれるから以後勝手に使っちゃだめ。
そのSetWindowRgnする前に(SetRgnEye関数)既にうまくいかないのですが・・・

849 名前:デフォルトの名無しさん :02/07/31 00:51
SetWindowRgnしてないのにどうやってCombineできて
ないと確認したのか説明せよ。まさかSetRegionは
アプリケーション全体を通じて1回しか呼ばれないのか?

とりあえずサンプルコード一式どこかにうぷしてみろ。
お前の回りくどい説明聞くより100倍分かりやすそうだ。

どうせそんなわけのわからんグローバル変数の使い方
してるくらいだからくだらんバグでも入れてんだろ。

850 名前:デフォルトの名無しさん :02/07/31 01:50
現在タスクマネージャーのようなプログラム作りにはまっています。
問題個所はすでに起動しているアプリケーションの強制終了方法です。
CreateProcess で実行したアプリなら簡単なんですけど、既に動いている *****.exe を他のアプリから強制終了させたいんです。
お力お願いします。

851 名前:デフォルトの名無しさん :02/07/31 02:30
>>845
それって 2000 より上ですよね?
95 とか 98 でもオッケーなんでしょうか?
プラットフォームは 2000 と書きましたが、
開発プラットフォームという意味でした。
ターゲットは 95 とかも含みなのです。。。

852 名前:MMIO :02/07/31 02:41
あのマジレスですけど、どうしてメモリマップドファイル
って Create していないのに Open で成功するんですか?

853 名前:API学くん :02/07/31 06:48
どうも有り難うございます。すっきりしました。
そう言えば昔のソフトはみんな一列でした。

854 名前:API学くん :02/07/31 07:05
しまった。>>853の発言は>>842さんに対してのものです。

855 名前:837 :02/07/31 12:36
>>849
http://members.tripod.co.jp/TeamZiang/hoge.lzh
にソースとヘッダを上げました。
私の冗長な説明は不要でしょうからこれを見て問題点を説明してください。

856 名前:デフォルトの名無しさん :02/07/31 13:34
>>851
9x系の印刷ダイアログに「現在のページ」はなかったと思うが。
2000/XPのときだけ使いたいなら、処理分けれ

857 名前:デフォルトの名無しさん :02/07/31 14:30
>>855
もうないぞ

858 名前:837 :02/07/31 15:26
すんません
http://members.tripod.co.jp/TeamZiang/hoge.LZH
拡張子が大文字でした

859 名前:デフォルトの名無しさん :02/07/31 15:33
WH_CALLWNDPROCで登録したフックプロシージャで
特定のメッセージを止めてしまいたいのですが、どのようにすればよいでしょうか。
CallNextHookExの返し値を返さず0を返しても素通りでした。

860 名前:デフォルトの名無しさん :02/07/31 18:09
>>859
受け取ったメッセージをWM_NULLに書きかえる。

861 名前:859 :02/07/31 19:53
>>860
なるほど。と思ってやってみたのですがダメでした
↓こんな感じで、0返しても素通りでした。

LRESULT CALLBACK HookProc(int code, WPARAM wp, LPARAM lp) {
 if ( code == HC_ACTION ) {
  CWPSTRUCT *pcwp = (CWPSTRUCT *)lp;
  switch ( pcwp->message ) {
   case WM_CLOSE:
    if ( MessageBox(0, "ウィンドウを閉じます", "", MB_YESNO) == IDNO ) {
     pcwp->message = WM_NULL;
    }
  }
 }
 return CallNextHookEx(hhook, code, wp, lp);
}


862 名前:デフォルトの名無しさん :02/07/31 20:04
>>859-861
無理。
CallNextHookEx は「次のフックプロシージャ」を呼び出すだけ。
フックプロシージャ内で何をどうしようと、
次のフックプロシージャが呼ばれようと呼ばれなかろうと、
本来のウィンドウプロシージャは、何事もなかったように元々の引数で呼ばれる。
・・・というふうに、リファレンスには書いてあるように読めた。

たぶんSetWindowLongでウィンドウプロシージャを置き換えるとかしないと駄目なんでわ?

863 名前:860 :02/07/31 20:19
>>861
>>862
MSDN見たら、WH_CALLWNDPROCではメッセージを修正することはできないと書いてた。
なのでWH_GETMESSAGEでやってみたら?

864 名前:デフォルトの名無しさん :02/07/31 22:20
>>863
WH_CALLWNDPROC と WH_GETMESSAGE では捕まえられるメッセージの種類が
違うだろ

865 名前:デフォルトの名無しさん :02/07/31 22:28
質問
高速(秒間50回とか)でInvalidateRect(hwnd, NULL, FALSE)を呼ぶと
画面がチラチラします。
ウインドウのクライアント領域しか再描画されていないはずなのに
デスクトップのアイコンやタスクバーまでチラチラするのはなぜですか?
また、これはDirectXというのを使わなくては駄目でしょうか。
良ければ教えてください。

866 名前:デフォルトの名無しさん :02/07/31 22:33
>>865
ゲームでもつくってんの?

867 名前:デフォルトの名無しさん :02/07/31 22:37
>>866
説明不足ですみません。
ウインドウズのプログラミングは全然初心者なのですが
マウスの上下(y軸方向)の変位を検出して、
それをリアルタイムでグラフにするようなプログラムを作っています。
うまく説明できないのですが
どんどんグラフが右から左に流れていくというか・・

868 名前:デフォルトの名無しさん :02/07/31 22:42
デスクトップがイカれるのは
hwndにNULLが入っているタイミングが無いか?
常に有効なhwndが入っているか確認汁

869 名前:デフォルトの名無しさん :02/07/31 22:51
>>868
レスありがとうございます。
確認してみたところ、やはり有効なhwndは入っています。
念のために if(hwnd!=NULL) と書いてNULLじゃないときっていうように
やってみましたが、結果は変わっていないようです。

870 名前:デフォルトの名無しさん :02/07/31 22:53
>>869
マウスの移動メッセージが1秒間に50回以上処理されていなければ
無意味じゃないの?

871 名前:デフォルトの名無しさん :02/07/31 22:57
>>870
はい、それで20ミリ秒ごとに(一秒50回)
GetCursorPos関数を呼んでマウスの位置を取得し
その後描画を行なっているのですが
取得した値は連続して変わっているので、1秒間に50回以上は
処理されているのかなと思います。

872 名前:デフォルトの名無しさん :02/07/31 22:59
>>871
WM_PAINTって優先順位低くない?

873 名前:デフォルトの名無しさん :02/07/31 23:00
>>781
XORで描いて消したら?

874 名前:デフォルトの名無しさん :02/07/31 23:01
>>872
すみません、素人なのでよく分からないのですが、
優先順位っていうのはなんでしょう?

どのメッセージから先に処理していくかっていうことでしょうか。
だとスバ、その順位を上げるにはどうすればよいでしょうか。
質問ばかりになってしまい申し訳ありません。

875 名前:デフォルトの名無しさん :02/07/31 23:11
>>874
他のメッセージがあるうちはWM_PAINTは取り出されないと思う。
グラフが1本しかないのなら、XORで描けば画面をクリアしなくて
済むよ。

876 名前:デフォルトの名無しさん :02/07/31 23:30
>>875
ありがとうございます。
よく考えたら、WM_PAINTを呼ばないと描画できないと思ってたんですが
別にどこでLineToを呼んでも線は引けるんですよね。
勘違いしていました。
ありがとうございました。

877 名前:デフォルトの名無しさん :02/08/01 00:19
>>865
そんな風なの作ってみたけど...要りますか?
...って、もう解決したのかな

MDIで質問があります
子ウィンドウを一斉に最小化しようと思い
列挙した子ウィンドウに直接WM_SIZEで
SIZE_MINIMIZEDをSendMessageしてみましたが
メッセージが受け取られているが、その通りの動作はしませんでした
どうすれば良いのでしょうか?

878 名前:デフォルトの名無しさん :02/08/01 00:24
メッセージ優先順位って、MSDNに載ってる?

879 名前:877 :02/08/01 00:42
自己レス
ShowWindow使ったらあっさりできてしまいました
お騒がせしました

880 名前:デフォルトの名無しさん :02/08/01 00:55
>>856
あ、やっぱ 9x 系にはないんすね。じゃーあきらめるっす。

ちなみに SDK だけ(MFCとか使わずに)で印刷プレビューとかって簡単に実装できるもの?
ヤパーリ自前でゴリゴリ書かないとダメ?

881 名前:デフォルトの名無しさん :02/08/01 01:41
某サイトのプログラムで、EDITコントロールに文字列(プログラムのログみたいな物)
を表示させるプログラムで文字列を一行追加するたびに
iLine = Edit_GetLineCount(hMainEdit);
for (i = 0; i < iLine; i++) SendMessage(hMainEdit, EM_SCROLL, (WPARAM)SB_LINEDOWN, 0);
といった処理を行って画面をスクロールさせてその時点で最後のログが表示されるように
してあるんですが、この方法だと行を追加するたびに最初からスクロールしているのが気になります。
行数が増えるとちらつくのも気になるんですが良い方法ありませんか?

882 名前:デフォルトの名無しさん :02/08/01 02:12
一番最後を選択して置き換え

883 名前:デフォルトの名無しさん :02/08/01 02:19
デバッガのように別のプロセスにアタッチしてブレークポイント例外を起こさせるにはどうすればいいのでしょうか?


884 名前:デフォルトの名無しさん :02/08/01 02:28
自分がデバッガになりたいのか、int3を発行したいのかはっきり汁


885 名前:865 :02/08/01 02:37
>>877
遅レスすみません。
>そんな風なの作ってみたけど...要りますか?
ということですが、もしよろしければ参考にしたいので
頂けないでしょうか?
もしOKということでしたらメアドを取って参りますので
その旨書き込んでいただけると幸いです。
よろしくお願い致します。

886 名前: :02/08/01 02:37
>>883
勘だが、DebugActiveProcessでプロセスにアタッチして、
止めたいタイミングでSuspendThreadして、
GetThreadContextで現在のIPを取ってきて、
そのアドレスにint3をWriteProcessMemoryして、
FlushInstructionCacheして、
ResumeThreadするみたいな感じでどうかね?

887 名前:デフォルトの名無しさん :02/08/01 07:59
XPならDebugBreakProcessで一発
もちろんあらかじめアタッチしておく必要はあるけど

888 名前:デフォルトの名無しさん :02/08/01 08:29
>>855
漏れの環境ではコメント部分があろうがなかろうが
結果は変わらなかったが。
少なくともお前の書いてる部分が問題ではないし
SetWindowRgnしたハンドルをグローバル変数に持ち続けるのは
明らかに間違いだからやめれ

889 名前:877 :02/08/01 10:13
>>865, 885
メール送るの面倒なので...
http://members.tripodasia.com.hk/rune187/api/q.txt
違ってたらゴメンね

890 名前:デフォルトの名無しさん :02/08/01 14:49
MoveTo LineToで描画した線をブリンク(点滅)させるのに、
良い方法はありませんか?

891 名前:デフォルトの名無しさん :02/08/01 15:30
>>890
その都度描き直す。これ最強。

892 名前:890 :02/08/01 15:43
>>891
その都度って、どの都度ですか?
Timer使ってってことですか。

893 名前:デフォルトの名無しさん :02/08/01 16:50
>>892 勝手に点滅させるWinAPIは無いから 891の言う通り 点滅する処理を自分で作るしかないという事

894 名前:890 :02/08/01 17:12
>>893
そうですよね。ありがとうございました。

895 名前:865 :02/08/01 18:05
>>877
ありがとうございます。
なるほど、今までの画面をBitbltで一ドットずつ次々に左に転送しているんですね。
大変ためになりました。
どうもありがとうございました。

896 名前:855 :02/08/02 10:50
>888
>漏れの環境ではコメント部分があろうがなかろうが
>結果は変わらなかったが。
どう変わりませんでしたか?

あなたは質問者を罵倒するだけ罵倒して解決法を示さないのですか?
能力があり、解決するならばあなたの傲慢な態度も甘んじで受けましょう。
しかし、それをしないでおまえはダメだと言うだけなら誰でもできますね。

897 名前:デフォルトの名無しさん :02/08/02 13:14
>>883
http://members.tripod.com/~masapico/doc_ApiSpy.html
は参考になるかも。

898 名前:デフォルトの名無しさん :02/08/02 14:23
ツールバーのビットマップの背景を透明にしたいときってどうすたらいいんでしょう?
何も考えずに作ったら、画面の配色変えたらグレーの背景になっちまいましたが。

899 名前:デフォルトの名無しさん :02/08/02 16:02
初心者向けの、Win32APIを使っての(MFCを使わない)C++のプログラミング
の本ってないでしょうか?本屋とかで易しそうな本見るとたいていMFCでの
プログラミングの本なんですが。

900 名前:デフォルトの名無しさん :02/08/02 16:12
>>899
猫でも見たら?

901 名前:デフォルトの名無しさん :02/08/02 16:22
猫は見ているんですが、それ以外にないなーと思ったんで。

902 名前:デフォルトの名無しさん :02/08/02 16:45
>899
じゃ、ATLの本でも……

903 名前:デフォルトの名無しさん :02/08/02 16:46
ダイアログボックス上にあるリストボックスが
アクティブの時に、WM_MOUSEWHEELをゲトしたいんですが、出来ますか?
スクロールバー無しのリストボックスです。

904 名前:デフォルトの名無しさん :02/08/02 16:49
サブクラス化したらできるはずだが。

905 名前:903 :02/08/02 17:02
>>904
サブクラス化って、言葉しか聞いたことないな・・・
ちょと調べてみます。


906 名前:デフォルトの名無しさん :02/08/02 17:35
スレ違いと言われたのでここにかきます。

すみません。

char a[]="なんらかの文字列";
という長さ・内容不定の文字列があり、始めから1文字づつTextOutでウインドウに表示したいのですが、
たとえば”あ”と”a”ではバイト数がちがうので、
int i=0;///グローバル

mainloop(){

TextOut(hdc,0,0,a,i);
i++;
}

なんてやるとローマ字はちゃんと表示されますが”あ”などの日本語になるとゴミになってしまいます。
かといってi+=2とやると今度はローマ字のところがおかしくなります。
この違いを自動認識するにはどうすればよいのでしょう。


907 名前:デフォルトの名無しさん :02/08/02 17:38
>>906
1文字ずつ出力するんなら、出力前に全角文字の1バイト目かどうか
自分で判定すればいいじゃん。

908 名前:デフォルトの名無しさん :02/08/02 17:52
(;´Д`)それがわからんのです。

909 名前:デフォルトの名無しさん :02/08/02 17:56
>>908
文字コード表と睨めっこしてきなさい。

910 名前:デフォルトの名無しさん :02/08/02 17:56
ハァ?_ismbbleadとか、IsDBCSLeadByteとか
CharNextとか、自前判定とか、方法はいくらでもあるだろ

911 名前:デフォルトの名無しさん :02/08/02 17:58
>>909
>>910
すみません。今まで長くプログラムやってきましたが文字列の表示時の判別は初めてだったんです。
ありがとうございました。

912 名前:デフォルトの名無しさん :02/08/02 17:59
>>908
Shift-JISなら1バイト目が
0x81から0x9F、または0xE0から0xEFになるんじゃないの?

913 名前:三瓶 :02/08/02 18:00
今まで長くプログラムやってきましたが初心者だったんです。
ありがとうございました。

914 名前:903 :02/08/02 18:04
>>904
できますた!904は神!!

915 名前:デフォルトの名無しさん :02/08/02 18:05
>906
_mbclen使うといいんじゃないのかなーとか言ってみるテスト。

916 名前:デフォルトの名無しさん :02/08/02 18:06
この国には神が多いな。

917 名前:デフォルトの名無しさん :02/08/02 18:11
>>916
なんつったって八百万の神々の国ですから

918 名前:デフォルトの名無しさん :02/08/02 18:11
すまん。しょーもないボケでageてしもた

919 名前:デフォルトの名無しさん :02/08/02 18:17
誤って済む問題じゃないな。

920 名前:デフォルトの名無しさん :02/08/02 18:20
謝って済む問題じゃないな

921 名前:デフォルトの名無しさん :02/08/02 23:04
謝って済む問題だと思うに一票

922 名前:デフォルトの名無しさん :02/08/03 01:13
感謝して済む問題じゃにぜ

923 名前:デフォルトの名無しさん :02/08/03 01:19
幻の問題「じゃにぜ」
ビルマ奥地の寒村に伝わると言う、
世界を記述するとも呼ばれた方程式の謎を追い、
我々川口探検隊は以下略。



924 名前:デフォルトの名無しさん :02/08/03 01:22
じゃにぜ事務所

925 名前:デフォルトの名無しさん :02/08/03 03:35
プログラムが起動されたデレクトレイを取得する方法があったら教えてください。

926 名前:デフォルトの名無しさん :02/08/03 03:44
デレクトレイとは何か知りませんが
ディレクトリならGetCurrentDirectoryで取得できます。
「プログラムが起動された」の意味によっては
GetModuleFileNameのほうかも。

927 名前:デフォルトの名無しさん :02/08/03 03:51
デレクトレイとはな、2ch用語なのじゃよ・・・

教えてくれて、ありがと!助かったヨ

928 名前:デフォルトの名無しさん :02/08/03 05:10
(´-`).。oO(どこの板の方言だ‥‥‥)

929 名前:デフォルトの名無しさん :02/08/03 08:22
教えてください
あるライブラリがファイルに直接書いてしまうので。
メモリーディスクのようの物を作成してそこに書かせたいのですが
どのようにすればよいのでしょうか?
よろしくお願いします

930 名前:デフォルトの名無しさん :02/08/03 09:03
RAMディスクを実装する

931 名前:デフォルトの名無しさん :02/08/03 09:08
これでも参考にしてみれば。
http://www.vector.co.jp/soft/winnt/hardware/se168218.html

932 名前:デフォルトの名無しさん :02/08/03 14:14
クリティカルセクションって、同じスレッドで複数回ロックしても
カウントされるだけなんですか?
10個並べてEnterCriticalSectionしたのに、ちっとも無限ループに陥りません。

933 名前:デフォルトの名無しさん :02/08/03 14:15
age

934 名前:デフォルトの名無しさん :02/08/03 14:33
関係ないが
Javaのsynchronized文はそんな感じだな。
そうじゃないとマルチスレッドアプリで再帰が使いづらいのかもな。


935 名前:デフォルトの名無しさん :02/08/03 14:47
>>932
そーです。そのとおり。

> Once a thread has ownership of a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution.
> This prevents a thread from deadlocking itself while waiting for a critical section that it already owns.


936 名前:デフォルトの名無しさん :02/08/03 14:57
GetSaveFileName()で開いたダイアログのファイル名欄に
あらかじめファイル名を表示させたいのですが、
どのようすればいいのでしょうか?

937 名前:デフォルトの名無しさん :02/08/03 15:28
>>936
http://216.239.39.100/search?q=cache:9iw1A3FdPVEC:www-ctp.di.fct.unl.pt/~jcs/cg1/commdlg3_1hma.htm+%22Pointer+to+a+buffer+that+contains+a+filename+used+to+initialize+the+File+Name+edit+control%22&hl=ja&ie=UTF-8&inlang=ja
これ?

938 名前:デフォルトの名無しさん :02/08/03 15:35
OPENFILENAMEは調べたんですが、それらしきメンバが無いみたいです・・・
lpstrFileTitleに文字列入れとけばできるかと思ったのですがダメみたいだし

939 名前:デフォルトの名無しさん :02/08/03 15:37
lpstrFile

940 名前:デフォルトの名無しさん :02/08/03 15:40
(´-`).。oO(何の為にGoogle介してハイライト表示させてると思ってるんだ……

941 名前:936 :02/08/03 15:46
なるほど・・・
どうもありがとうございました。

942 名前:デフォルトの名無しさん :02/08/03 16:07
winnt\system32\cpuinf32.dll
って使った方います?
使用方法がわかりません。

943 名前:899 :02/08/03 16:40
http://black.sakura.ne.jp/~third/win.html
ここもあった

944 名前:デフォルトの名無しさん :02/08/03 19:23
MFCアプリ作成時でも、コンソールアプリのウィンドウを表示して
そこにprintfかcout使って文字を吐きたいんだけど、どうすればよいの?



945 名前:デフォルトの名無しさん :02/08/03 19:50
>>944
SetStdHandleして_ioinitを呼ぶ

946 名前:944 :02/08/03 21:12
>945
できたデス。
さんくす。

947 名前:デフォルトの名無しさん :02/08/03 23:18
DialogBoxよりもDialogBoxIndirectを使った方がダイアログリソースを
追加しない分プログラムのサイズが小さくなると思ったのですが、
実際に作ってみるとどちらも40KBほどで同じサイズでした。
リソースってプログラムのサイズとは関係ないのでしょうか?

948 名前:デフォルトの名無しさん :02/08/03 23:20
ある

949 名前:デフォルトの名無しさん :02/08/03 23:26
>>947 環境によるんだけど、
リンカの設定によっては実行ファイルのサイズはアラインされるから小さな差が出ない事があるよ


950 名前:デフォルトの名無しさん :02/08/03 23:40
>>947 VCなら /opt:nowin98 とやってみる

951 名前:デフォルトの名無しさん :02/08/04 10:49
>>947
http://www.asahi-net.or.jp/~kh4s-smz/spi/note/minispi.html

952 名前:デフォルトの名無しさん :02/08/04 14:14
DialogベースのウィンドウでESCキーで終了しないようにするにはどうしたら
良いのでしょうか? spy++で追っかけると、いきなりDESTROYが飛んでるよ
うですが・・・

953 名前:デフォルトの名無しさん :02/08/04 15:22
IDCANCELが飛んでこなかったっけ?

954 名前:デフォルトの名無しさん :02/08/04 16:02
>>952
>>953が正解。なんで、IDCANCELを受けないようにすればいい。というと、
「右上の×で閉じないんですが」と言われそうなので、そのときは、
WM_SYSCOMMAND捕まえて、wParamがSC_CLOSEだったら終了処理にすれば、
終了させられる。


955 名前:952 :02/08/04 16:12
大感謝。完璧です。

956 名前:デフォルトの名無しさん :02/08/05 02:37
WMPみたいに「常に手前に表示」と同じようなプログラムを作るには
どのような方法がありますか?

957 名前:デフォルトの名無しさん :02/08/05 02:40
SetWindowPos
HWND_TOPMOST
でぐぐれ

958 名前:956 :02/08/05 02:44
>>957
サンクス。

959 名前:JPEG特許問題 :02/08/05 16:04
OleLoadPictureFileはMFCでしか使えないのでしょうか?
MFCでいうSetPictureDispatch等がSDKで使えるのなら解決しそうなんですが、
やり方が分かりません。

OleLoadPictureFileがSDKで使えないならIJG・・・・鬱。


SDKでOleLoadPictureFileを使う方法を教えて頂ければありがたいです。
よろしくお願いします。


960 名前:デフォルトの名無しさん :02/08/05 16:04
ペゾルドのプログラミングWindowsがいまいち理解できません。
こんな漏れは逝ってよしですか?

961 名前:デフォルトの名無しさん :02/08/05 16:28
このサイコロの目は 裏の目とオモテの目を足すと7になります
1と6は赤
2と5は赤と青
3と4は青に塗られています。

今サイコロを転がして赤が出ました。 裏が赤の確率は?



962 名前:デフォルトの名無しさん :02/08/05 16:29
誤爆カコワルイ

963 名前:デフォルトの名無しさん :02/08/05 16:40
2/3 ?

964 名前:デフォルトの名無しさん :02/08/05 16:54
1/2

965 名前:デフォルトの名無しさん :02/08/05 17:11
>>964
why?

966 名前:デフォルトの名無しさん :02/08/05 17:19
>>962
What?


967 名前:デフォルトの名無しさん :02/08/05 20:23
>>961
where?

968 名前:デフォルトの名無しさん :02/08/05 20:24
>>964で合ってるんじゃないのか??

969 名前:デフォルトの名無しさん :02/08/05 20:35
>>968
はぁ?

970 名前:デフォルトの名無しさん :02/08/05 20:42
>>110
テキストボックスは Windowsの用意してるコントロールを使っています
 もしテキストボックスを使う事で何か問題があるなら、Windows上のほぼ
 全てのアプリに問題がある事になるでしょう

なお、一般的にはクライアントアプリで脆弱性を云々しないと思います

971 名前:デフォルトの名無しさん :02/08/05 21:44
>>968
おぃおぃ。。
今、赤が出たなら、目は 1 か 6 か 2。
その中で裏側も赤の場合は 1 か 6 だから、2/3 だろ?違うのか?

972 名前:デフォルトの名無しさん :02/08/05 21:46
>>959
OleLoadPicturePath() で検索しる

973 名前:デフォルトの名無しさん :02/08/05 22:03
ハードウェアプロファイルの一覧を取得したのですが、APIとかありますか?
現在のハードウェアプロファイルの内容を取得するAPIはあったのですが(GetCurrentHwProfile)、
HWプロファイルの一覧を取得したいのです。
レジストリから直接でもいいのですが、HWプロファイル名が見つかりませんでした。
どなたか、よろしくおながいします。

974 名前:デフォルトの名無しさん :02/08/05 22:11
パスの最後に\をつける(すでに付いていたら何もしない)には
下記の方法で大丈夫でしょうか?
一応「表」フォルダを作って試してみて、ちゃんと\は付いたのですが
他に気をつけることはありますか?

void AddBackslash(LPTSTR lpszPath)
{
  if(IsDBCSLeadByte(lpszPath[lstrlen(lpszPath) - 2]) ||
    (lpszPath[lstrlen(lpszPath) - 1] != '\\')){
    lstrcat(lpszPath, TEXT("\\"));
  }
}


975 名前:デフォルトの名無しさん :02/08/05 22:30
>>974
IsDBCSLeadByteでは「2バイト文字の2バイト目ではない」ことが保証できないから、
ちゃんと頭から調べないとダメよん。
っつか、そのコードだと "a" とか与えたら吹っ飛びそうだが。

976 名前:デフォルトの名無しさん :02/08/05 22:52
>>975
この場合は保証されなくてもよくない?

977 名前:デフォルトの名無しさん :02/08/05 23:33
>>976
すると 「も\」 が 「も\\」 になってしまうがよろしいか?

978 名前:デフォルトの名無しさん :02/08/05 23:34
>>977
Windowsのフォルダ名に\はつけられんよ。

979 名前:デフォルトの名無しさん :02/08/05 23:35
>>980さん、次スレよろしくね

980 名前:デフォルトの名無しさん :02/08/05 23:40
フォルダオプションのクリック方法が「ポイントして選択」かどうか(HoverSelection)、調べられません?
ホットトラッキングは、SystemParametersInfo の SPI_GETHOTTRACKING で取得できるンですが…

981 名前:デフォルトの名無しさん :02/08/05 23:54
>>978
コーディングの初期条件である
>パスの最後に\をつける(すでに付いていたら何もしない)
を満たさなくなるってことだろ?

982 名前:デフォルトの名無しさん :02/08/06 00:07
>>981
え?なんで満たさなくなるの?


983 名前:デフォルトの名無しさん :02/08/06 00:22
>>974
PathAddBackslash使わん理由は?

984 名前:デフォルトの名無しさん :02/08/06 00:37
>>985
次スレよろ


985 名前:デフォルトの名無しさん :02/08/06 00:39
断る

カチャ
  ;y=ー( ゚д゚)・∵. ターン
  \/| y |)

986 名前:デフォルトの名無しさん :02/08/06 00:39
>>977
仮に C:\も\ というパスがあったとすると、
> IsDBCSLeadByte(lpszPath[lstrlen(lpszPath) - 2])
で「も」の2バイト目がチェックされて偽となり、次に
> lpszPath[lstrlen(lpszPath) - 1] != '\\'
でパスの最後が \ だからこれも偽となり、結局何もせずに
リターンするから C:\も\ はそのままでは?

987 名前:デフォルトの名無しさん :02/08/06 00:41
俺が立てようと思ったが、今日すでに他のスレを立ててしまって
はじかれてしまった…

988 名前:デフォルトの名無しさん :02/08/06 01:26
>>986
「も」のShiftJISコードは 82 E0 で
IsDBSCLeadByte(0xE0) は TRUE。よって、
    lstrcat(lpszPath, TEXT("\\"));
が実行されるだろ?

やるなら、
if (CharPrev(lpszPath, lpszPath+lstrlen(lpszPath)-1) != '\\')
  lstrcat(lpszPath, TEXT("\\"));
とかだろ。
最近、Win32API書いてないから CharPrev の引数あってるか自信ないけど(w

989 名前:デフォルトの名無しさん :02/08/06 03:00
>>982
それくらい実際にコンパイルすりゃ判るだろうに
>>983
shlwapi.dll が入ってない環境のことは考えないのか?

漏れなら GetFullPathName() 使うよ

990 名前:デフォルトの名無しさん :02/08/06 05:47
新スレ

Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/

991 名前:デフォルトの名無しさん :02/08/06 07:02
おつ>990
埋めちゃえ〜

992 名前:JPEG特許問題 :02/08/06 10:36
>>972殿

ありがとうございます。

しかし、不思議なテクニックを使う関数ですな。
いわゆるCOMというものでしょうか?


993 名前:デフォルトの名無しさん :02/08/06 11:16
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50







994 名前:デフォルトの名無しさん :02/08/06 11:16
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50

Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50










995 名前:デフォルトの名無しさん :02/08/06 11:16
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50

Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50


Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50

996 名前:デフォルトの名無しさん :02/08/06 11:17
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50














997 名前:デフォルトの名無しさん :02/08/06 11:17
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50

Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50











998 名前:デフォルトの名無しさん :02/08/06 11:17
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50

Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50

Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/l50




999 名前: ◆itdn3QI6 :02/08/06 11:17
999











1000 名前: ◆itdn3QI6 :02/08/06 11:18
1000


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