Win32API質問箱 Build24

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:04/11/24 21:05:08
>>948
VisualC++逆引き大全500の極意
って本がかなりいいよ。
MSDNの100倍役に立つ。
これからは「MSDNの100倍役に立つVisual(以下略
って出してもいいくらい。

最近MSに下記原文まんま(ハゲ抜かしてw)で送ってみた。

おい!MS!てめぇんところにもう何年投資してやってるとオモテンだ!ハゲ!
いつになったらWin32APIが日本語訳されんだよ!ハゲ!
全然進歩してねぇよ。ハゲ!
最近じゃ英語ヘルプも含めて、日に日にWin32APIにヒットしなくなってるのは
どういうことだよ。ハゲ!
日本語訳そっちのけで、新機能なんか追加してんじゃねぇよ!ハゲ!
フィルタの種類ももニーズにあってないんだよ!ハゲ!
センスの悪さがMSDNからにじみ出てんだよ!ハゲ!

まだ、レスが返ってこないよw
953デフォルトの名無しさん:04/11/24 21:11:56
>>952
ゲイツ「これだから英語も出来ない極東の小国の民は困る」
954デフォルトの名無しさん:04/11/24 21:27:22
>>952
VisualC++逆引き大全500の極意
買ったけど損した。
使えるサンプルコードが少なすぎ。

たとえばSHBrowseForFolder の所なんかサンプルコードないだろ
955デフォルトの名無しさん:04/11/24 21:45:11
>>954
でも、ここまで詳しく書いてあれば十分だよ。
俺はその存在をしっただけでもよかった。
956デフォルトの名無しさん:04/11/24 21:46:05
逆引き大全、俺も VC++ を始めたての頃に買った。
誤植も多いけど、結構役に立ったよ。初心者にはいいと思う。
957デフォルトの名無しさん:04/11/25 00:52:04
htmlでルビ付きの文字列を作成し、それをVB6で
WebBrowserを使用してフォーム上に表示してますが、
WebBrowserは透過が出来ないため、WebBrowserの背景が
長方形型にくっきりと残ってしまいます。
どうしても、枠を消してフォームの背景上にWebBrowserの
ルビ付き文字だけを表示させたいのです。

VBでWebBrowserを透過表示させる方法を教えてくらはい
958デフォルトの名無しさん:04/11/25 05:42:16
たしかにMSDNは逆引きには向いてないな。
とくにShell/OLE/COM周りは。
959デフォルトの名無しさん:04/11/25 05:57:27
>>957
特に簡単な手はないです。get_Documentでドキュメントを手に入れて、
body の style を操作して背景イメージを適切に設定するのが良いと思います。
960デフォルトの名無しさん:04/11/25 06:07:00
逆引きだったら
VC++によるWin32プログラミングTips
http://www.expertmg.co.jp/html/cti/vctips/

フォルダ選択ダイアログの実装もちゃんとコードつきで説明がある。

961デフォルトの名無しさん:04/11/25 07:26:01
なぁ?
ディレクトリリストボックスってなかったっけ?
なんか古いタイプのファイルオープンダイアログにはついてんだけどなw
単体では無いんだなw
962デフォルトの名無しさん:04/11/25 07:29:10
LB_DIRのことか?
963デフォルトの名無しさん:04/11/25 07:37:18
>>962
おお!それそれ!
なるほどリストボックスだったんか・・・
SHBrowseForFolderとどっちがいいかな?
964デフォルトの名無しさん:04/11/25 07:50:31
>>936
ワラタ
965デフォルトの名無しさん:04/11/25 09:48:35
コンボボックスのオプションで
HTMLのOPTGROUPの様なものはありますか?
966デフォルトの名無しさん:04/11/25 15:20:56
コマンドラインやD&Dで渡されたファイル名を全部取り出すには
GetCommandLine() の返り値を全部解析するしかないですか?

またコンソールプログラムの場合はmain() の argc, argv でいいんですか?
967デフォルトの名無しさん:04/11/25 15:27:58
Win2K、VB6で開発を行なっています。
NetUserGetLocalGroupsを使ってUserの所属するグループを取得しようとしているのですが、
同じUser名でドメインの違うユーザーの区別はどうすれば良いのでしょうか?

NetUserEnumでUser名を列挙すると、"UserName"、"VUSR_USERNAME"と区別されているよう
なので、返された名前をNetUserGetLocalGroupsに渡してみたのですが"VUSR_USERNAME"の
方で関数が失敗してしまいました。
968デフォルトの名無しさん:04/11/25 15:34:57
MSDNに
<DomainName>\<UserName>
て書いてるけど
969デフォルトの名無しさん:04/11/25 15:57:48
>>966
NT系ならCommandLineToArgvWがつかえる。
970デフォルトの名無しさん:04/11/25 16:12:02
>>968
ああ、本当だ。吊ってくる..(´・ω・`)ショボーン
グループは取得できました。ありがとうございました。

それと、USR_USRERNAMEは何の関係も無かったです。
971デフォルトの名無しさん:04/11/25 16:20:39
WriteFileにてテキストファイルを上書きするとき、
元々書いてあった文字列より短いものを上書きすると、
前の内容が残っているようです。

↓こんな感じになります。
ファイルの文字列「あいうえお」
上書きする文字列「OK」
更新後のファイル文字列「OKうえお」

解決法を賜りたいです。
972デフォルトの名無しさん:04/11/25 16:30:34
>>971
SetEndOfFile
973971:04/11/25 16:33:01
>>972
ありがとうございます。
それを調べてみます。
974デフォルトの名無しさん:04/11/25 17:16:15
Windows XP 64-bit Edition上で32bitアプリから64bitアプリが
CreateProcess()で起動可能か検証したことのある方。
できましたでしょうか?
975デフォルトの名無しさん:04/11/25 17:18:28
>>969
ありがとうございます。
976デフォルトの名無しさん:04/11/25 18:06:05
例えばWindowsの検索を選んで、検索したいファイル名やフォルダを探すため、
エディットボックスのハンドルを得ようとしますよ。
その際、僕はVC++のSpyとか言うのを使って、子ウィンドウとなっているそれが
上から何番目になってるか調べてChildWindow(?)とかいう関数を使ってGW_NEXT
で順々にハンドルをとる、面倒で馬鹿な事やってるんですが、
これ以外にいい方法はありませんか?


なんかわかりにくいですが、要は一発で
検索のような入り組んだアプリケーションの、エディットボックスのハンドルを得たいんです。
無理でしょうか?
977デフォルトの名無しさん:04/11/25 18:15:35
>>976
ウィンドウクラスで検索して、GetDlgCtrlIDでコントロールIDを取得して
目的のものかどうか判断するってのはどうでしょう?
978デフォルトの名無しさん:04/11/25 18:59:12
前の方に出ていたOpenProcessToken()とCreateProcessAsUser()を使ってサービスからログオンユーザーの
デスクトップでアプリを実行させようと思ったんですが、ログオンユーザーのプロセスハンドルの取得
方法が分かりません。どうやってアカウント名からプロセスハンドルを引っ張ってこればよいですか?
979デフォルトの名無しさん:04/11/25 20:36:03
CreateWindowExでリストボックスを作っているのですが、
コレは・・・高さが文字の高さの整数倍にしかならないみたいなんですけど、
ウィンドウの幅にぴったり合わせるにはどうしたらいいでしょうか?
今はMoveWindowでウィンドウに合わせようとしています。
980デフォルトの名無しさん:04/11/25 20:50:47
>>978
LogonUser( "UserName", NULL, "Password", LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
& hToken );
でトークン作ったほうが簡単。
981デフォルトの名無しさん:04/11/25 22:13:36
>>980
その方法だとパスワード引っ張って来るのに、gina.dllに細工するとかちょっと仕掛が必要ですよね?
ちょっち、難易度が高い気がするです。

各アカウントのパスワードをユーザーに開示してもらうっていうのも現実的ではないですし…困り
ました。
982デフォルトの名無しさん:04/11/25 22:33:37
winsta0のプロセスと同じアカウントである必要はなしです。
適当な実行権があればCreateProcessAsUserはwinsta0\Default上に起動しますが。
(つかSIDからトークンにするやり方わからん)
983デフォルトの名無しさん:04/11/25 22:58:54
だから>>732だっつってるのに。
このスレだけで三度目だぞその質問
984デフォルトの名無しさん:04/11/25 23:04:02
ああ方法が分からないって言ってるのか。
現在ログオンしてるユーザーでいいんだろ?
だったら現在走行中のプロセス列挙してどれでもOpenProcessすればいい
どのプロセスもwinlogonが作成したトークンを引き継いでるはずだから
(Terminal Serviceや「ユーザーの切り替え」や「別のユーザーとして実行」は
考慮してないが)
985 ◆Manna2uCLg :04/11/25 23:13:33
ちょっくら次スレたててきますよ。
986 ◆Manna2uCLg :04/11/25 23:17:15
すまん、立てられなかった。orz

↓代わりによろしく
987デフォルトの名無しさん:04/11/25 23:27:49
まかせろ
988デフォルトの名無しさん:04/11/25 23:34:19
989デフォルトの名無しさん:04/11/25 23:34:52
990デフォルトの名無しさん:04/11/26 08:34:43
991デフォルトの名無しさん:04/11/26 13:05:36
>>990
それだと権限がLocalSystemのままだから危なくない?
ってリンク先にも書いてるけど
992979:04/11/26 15:26:50
もう一つ質問です。
リストボックスの文字色を変えるにはどうしたらいいんでしょうか?
エディットボックスの場合には、WM_CTLCOLOREDITをつらまえて
SetTextColorで変更できたのですが、
リストボックスの場合は、WM_CTLCOLORLISTBOXをつらまえて
SetTextColorをやっても変更されません。
フォントの種類は変更できました。

リストボックスの文字色は、部分的にではなく、
全体としての文字色を変えたいです。
検索してオーナードローが出てきたのですが、
オーナドロー時にSetTextColorをやっても変更できませんでした。
よろしくお願いします。
993デフォルトの名無しさん:04/11/26 15:31:31
>>992
    [SetWindowPos]
∀・)っ[カスタムドロー]
994デフォルトの名無しさん:04/11/26 17:04:00
>>992
UIの部分だけVBで作るっていう手もあるけど・・・
995デフォルトの名無しさん:04/11/26 17:15:11
指定したファイルが更新された場合に通知してくれる
APIがあったと思うんですが、関数名なんでしたっけ?

誰かご存知の方ご教授願います
996デフォルトの名無しさん:04/11/26 17:52:43
FindFirstChangeNotification?
997979:04/11/26 18:24:29
ありがとうございます。

>>993
それで頑張ってみます。

>>994
VBは触ったことがないので分かりません。
ごめんなさい。
998デフォルトの名無しさん:04/11/26 18:32:54
リストボックスはカスタムドローできない。
できるのはリストコントロール。
999デフォルトの名無しさん:04/11/26 18:41:35
>>996
これです。ありがとうございました!
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。