喫茶XRAYトップページ

[スレッド全体
]

[5552] Window7にDelphi6 personalをいれての開発は限界か?返信 削除
2011/12/2 (金) 15:09:18 宮 〔HomePage
私の力量では・・。
しばらくご無沙汰していますが、当方はパニック状態でてんてこ舞いでした。
体験記を述べます。長文ですからよければ一読ください。

以下は理論的な根拠があって言っているわけではありません。

Windowsのアップデートのたびにセキュリティ関連に関わるためか
Web、インターネット関連、またポップアップをタブにねじ込むためか?
タブブラウザのPagecontrol関係にきつい影響が出ています。
ただし、その他の、インターネットコンポーネントを使わないアプリは何の
影響もありません。
昨年6月Windows7導入。EドライブのDelphi6にインストした当初は
URLDownloadToFile()は機能しなくなったので、
IdHTTP.Get()に切り替えました。・・・いやな兆候。
しかし、その後現在は再びURLDownloadToFile()は機能するようになっています???。
そして今年8月までほぼ安定して使えていました。
あくまで7のD6で拙作タブブラウザ製作の上で・・・です。
とにかくコードを書き換えながら、なんとか切り抜けてきたのですが
今年8月末から9月当初にかけたWindowsのUpdateで、
徹底的なダメージを受けました。
TWebbrowserに代わる高機能TEmbeddedWBを長年使ってきたのですが
どうしてもある問題をクリアーできなくなりました。
拙作アプリの中核をなすコントロールなので、挫折感ピーク。
さらにTPagecontrolもTEmbeddedWBとコンビで使う上で
重要な機能をクリアーできなくなりました。
私にとっては、もうお先真っ暗なダメージです。
やはりMSもWeb関係とエクスプローラ関係はかなりUpdateしていますね。
つい最近やっとAdobe ReaderもIE上で完動するようになったし。
(#v9以降突っ張りあっていたけど、どちらが相手にあわせたのか知らないが。
しかし未だにエクスプローラーにも欠陥がある。かなり嫌らしい)。
9月以来インストールもいろんなパターンで6回リトライしてみました。
でも解決しないので、
EmbeddedWBを鈍くさい、バグ付きWebbrowserへ変更。
Pagecontrolを鈍くさい単機能Tabcontrolへ変更。
ということはCHILDシステムへ。ということは遅くて残像が残る欠点。
さらにCHILDは単一コンポーネントしか貼り付けられないと書いてあったが
何とかエディター、Image、Windows Media Player、
WebBrowserを貼り付けられたのでたぶん禁じ手かもしれないがとにかく動く。
このどんくさコンビニ移すと同じコードで動くのです。
VCLの中身は知らないが、鈍くさいだけあり、
WindowsUpdateにも打たれ強いのを体感している。

現行のXE2?なら何の苦労もないのだろうが、なにせ貧乏で参考書も買えない。
そろそろ別のGUI開発無料ツールを考えなければとSwing系のNetBeansか、
実績SWT系のEclipseか、またまたVisual C++ 2010 Express など検討中。
かりにWebブラウザアプリを作成するにはどんな言語、ツールがおすすめか
教えていただければ幸いです。
では近況まで。


[5574] UACに注意返信 削除
2011/12/5 (月) 20:01:30 Mr.XRAY
みなさん,
なんだか盛り下がって(?)いるようですが,
Windows 7 + Delphi 6でも十分とはいかないでしょうけど,使えると
思います.

宮さんのトラブルの原因はいろいろあるでしょうけど.UACがらみも
あるのではないかと思われます.
アプリを提供する場合,設定ファイル等も使用すると思います.
他のユーザが作成したファイルは,別のユーザが読みだすことは可能ですが,
書き込みは出来ません.
でも,エラーは発生しないことがあります.
で,こんな時,Windowsはどうするのか?
別の場所に書き込むことがあります.これが仮想化の問題です.
要注意ですね.

これに気付かないで,UACを無効にしたり,有効にしたりすると,泥沼
に陥ることになるてしょう.
UACは有効にしたままの状態で利用されることをお勧めします.
テスト目的であれば別ですが.
うまくいかないからUACを無効にしてしまえ!! というのは無理があるのでは
ないかと思います.利用者が必ずしもUACを無効にしているとは限りません.

以下のページに,仮想化というわけではありませんが,何か参考になる
かも知れないリンクがあります.
既にご存知かも知れませんが,参考までに.

[Windows Vista以降のOSでDelphi]
http://mrxray.on.coocan.jp/Delphi/Others/WindowsVista.htm


お金がないと言われれば返す言葉がありませんが,
旅行を一回程度我慢する,という手もあります.
仕事や趣味にどの程度まで使えるかですね.
骨董が趣味の人の中には,大変な御仁もいらっしゃるようです.

でも,年齢のことを考えると,宮さんってすごいですよね.
私がその年になった時に,どの程度頭が働くか疑問です.


[5575] UACに注意と言えば…返信 削除
2011/12/5 (月) 21:45:29 たてぐや
▼ Mr.XRAYさん

 こんなコードがあったとします。

{===============================================================================
Windowsをシャットダウンさせる。
===============================================================================}
procedure TFrmSet.Shutdown;
var
  hToken: THandle;
  tkp: TTokenPrivileges;
  dwRet: DWORD;
begin
  // このプロセスのためのトークンを取得。
  if (not OpenProcessToken(GetCurrentProcess,
    (TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY), hToken)) then
    Writeln('OpenProcessToken');

  // シャットダウンに必要な権限を取得。
  LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
  tkp.PrivilegeCount := 1; // one privilege to set
  tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  dwRet := 0;

  // シャットダウンプロセスに必要な特権を取得。
  AdjustTokenPrivileges(hToken, false, tkp, 0, nil, dwRet);

  // AdjustTokenPrivilegesの戻り値をチェック。
  if (GetLastError <> ERROR_SUCCESS) then
    Writeln('AdjustTokenPrivileges');

  // 強制的にアプリケーションを終了させながら、シャットダウン。
  if (not ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0)) then
    Writeln('ExitWindowsEx');
end;

 これ、おそらくUACにひっかかってダメだと思っていたのですが、すんなり
通ってシャットダウンしました。多分「シャットダウンプロセスに必要な特権
を取得します。」あたりで引っかかると思っていたのに意外でした。

※コード悪用厳禁

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82