mcrblog

vcpp-ml

1999年10月

31

[vcpp 00034140] NT4.0のDOS窓でエスケープシーケンスを使う方法


いつもお世話になります。
エスケープシーケンスの質問です。

NT4.0上でエスケープシーケンスを使う前準備として、

c:\winnt\system32\config.nt

に、以下を追加すると使えると聞きました。

devicehigh=%SystemRoot%\system32\ansi.sys

で追加してリブート。

準備が終わったのでVC++でコンソールアプリケーションの
プロジェクトを作成し、

ソースに、

printf("\x1B[2J"); // コンソール画面をクリア

を追加しました。

しかし、実行してもなんら変化がありません。(クリアされない。)
そこで、Windows98へ移り(デュアルブートマシンです。)
実行すると、きちんとクリアされます。(当たり前ですね。)

では最初の準備が全く効いていないということでしょうか?

コマンドラインでエスケープシーケンスを確認する方法が
あれば教えてください。

あと、エスケープシーケンスが使えない場合として、何か代替案
がありますでしょうか?いまからエスケープシーケンスを使った
NTコンソールプログラムを作ろうとしているのですけど、このまま
代替案がなければ、Win98ONlyになりそうです。


---Tetsuya Nakashima
30

[vcpp 00034139] 特権SE_TCB_NAME の取得

こんばんは。岡田@山口大学です。

最近 IMAP4 のソースを眺めていてふと疑問に思ったことがあるので、
投稿しました。その疑問と言うのは
ユーザーマネージャで
「オペレーティングシステムの一部として機能」
を設定せずに SE_TCB_NAME 特権を得ることができるのかどうか
と言うことです。
# SERVICE として起動してしまえば SYSTEM 権限なので
# 当然 SE_TCB_NAME 特権を取得できますが、、、

ひょっとして「オペレーティングシステムの一部として機能」ってのは、
SE_TCB_NAME 特権を Enable にできる能力って言う意味なんでしょうか?

SE_TCB_NAME 特権が得られれば、LogonUser() 関数辺が使えるので、
UNIX の su みたいなことができるんですが、、、
AdjustTokenPrivileges() しても、
「オペレーティングシステムの一部として機能」
を持ってないと、SE_TCB_NAME は蹴られてしまいますし、、、
# http://www1.plala.or.jp/knambo/kb/nt/LogonUser.html#LOGONUSER
# では取得できるようなことを書いているんですが、、、

C++Builder Tips
http://www.inprise.co.jp/tips/cbuilder/cb014/logonusr3.html
に、su もどきのサンプルソースがありますが、こいつはあらかじめ
「オペレーティングシステムの一部として機能」
をユーザーマネージャで設定しないと駄目なようでした。

CQ出版の「Win32サブルーチンズ」でも su もどきを作ってますが、
こちらはデーモン作って SERVICE として立ち上げることで、
回避してるみたいです。

ご存知の方がいらっしゃったらよろしくお願いします。m(_ _)m

------------------------------------------------------------
        山口大学大学院理工学研究科
                博士後期課程物質工学専攻 1年
                               画像情報工学研究室
                                        岡田 耕一

        e-mail:k...@sip.eee.yamaguchi-u.ac.jp
------------------------------------------------------------
30

[vcpp 00034138] 再変換のやり方

再変換の未対応アプリでも、再変換をできるようにするtoolを製作しています
が、どうもやり方がわかりません。

そのアプリに、SendMessageでRWM_RECONVERTREQUESTを
RegisterWindowMessageで変換して送っているのですが、反応なしです。

こんなかんじです(今は、自分のウインドウに送っています)

UINT nRECONVERT;
nRECONVERT = RegisterWindowMessage(RWM_RECONVERTREQUEST);
SendMessage(nRECONVERT, FID_RECONVERT_VERSION, NULL);

このプログラムが間違っているのでしょうか?
それとも、もっと違う方法があるのでしょうか?

よろしくおねがいします。

-- 
GUI mailto:g...@nightland.net
30

[vcpp 00034137] Re:リッチテキストについて

こんにちは。watanabeです。

神野さん、三浦さんありがとうございました。
なんとか動作しました。
本当に助かりました。
また何かあった時は、よろしくお願いします。

ありがとうございました。
30

[vcpp 00034136] Re: [vcpp 00034130] Re: RichEditCtrlをCStringの変数と比べたい

あひる様 SAIMI Kohei 様ご教授有り難うございます。
こんにちはSuzukiです(^^

> > ところでもう一つ知識がないところでの素朴な便乗質問なのですが・・
> > CTWScriptEdit::OnChange()の中でクラスの異なる CMy1Dlgクラスの::Insert()

> > 実行する場合はヘッダなどに何か特別な記述をしなければならないのでしょうか

> >
> > void CMy1Dlg::Insert(){ /* 自分で作った関数で何か実行される */ }
> >
> > void CTWScriptEdit::OnChange() { // 異なるクラスの派生です
(CRichEditCtrl)
> > CString str;
> >  CString Japanese = "日本語" ;
> >  GetWindowText(str);              // あひるさん ありがとうございます!
> >  if ( str == Japanese )
> >
> >     void CMy1Dlg::Insert() ;      // を実行したいのですが・・・
> >   }
> >

> 仮に1)を使うならば、まず、ビルドオプションでRTTIを
> 有効にし、
>
>   CMyDlg* pDlg = dynamic_cast<CMyDlg*>(GetParent());
>   if (pDlg != NULL) pDlg->Insert();
>
> と修正すればよいでしょう。

早速修正してがっちり動作するようになりました!
これを機会にC++言語の勉強にいそしませていただきます。
みなさま本当にどうも有り難うございました。!

I-ichirou Suzuki_/_/_/_/_/_/_/_/_/_/_/_
URL : http://www.kg-group.com/
Mail : s...@kg-group.com
_/_/_/_/_/_/_/_/_/_/_/_/ICQ 3743158_/
記事検索
Amazon.co.jp
  • ライブドアブログ