VC++を使っています。OSは Windows2000 です。
CreateFile で指定するファイル名をフルパスで指定し、EXEを同じ
ディレクトリに置いて実行したところエラーとなり、詳細コードが ERROR_PATH_NOT_FOUND でした。
プログラムは以下のようになっています。

#define AAA "c:winnt\\system32\\AAA.log"

hOpen = CreateFile(
AAA,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);

上記プログラムの AAA.exe を system32下に置いて実行すると、
パスが不正だと怒られてしまいます。。。
AAA.exe を別ディレクトリで実行すると、sysytem32下にちゃんと
ファイルが作成されます。
AAA.exe を CreateProcess する BBB.exe を造って試しましたが、
やはり BBB.exe が system32下にあると駄目でした。
どうやらカレントディレクトリが同じだと駄目みたいです。
「"AAA.log"」とせずにフルパスとしているのは以下の理由のためです。
・ファイルは必ず system32下に作成したい。
・AAA.exe は必ず system32下にある。
しかし、BBB.exe が必ず system32下にあるとは限らないため、
「"AAA.log"」とした場合、BBB.exe を実行したディレクトリに
作成されてしまう。

CreateFile には今回のような制限があるのでしょうか???
#ヘルプを見る限り、書いてないです。。。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

> #define AAA "c:winnt\\system32\\AAA.log



の c:winnt が c:\\winnt じゃなくちゃいけない、ってんじゃないですか?
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
ご指摘の通りです。
私のコーディングミスです。
#恥ずかしい。。。
別ディレクトリから実行した場合、正常に動作していたため、
define は問題ないと思い込んでいました。。。
#でも、何で正常なんだろう???
#ふしぎ、ふしぎ。。。

お礼日時:2001/08/08 16:43

#define AAA "c:winnt\\system32\\AAA.log"


    ↓
#define AAA "c:\\winnt\\system32\\AAA.log"

ではないですか?
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。
ご指摘の通りです。
私のコーディングミスです。
#恥ずかしい。。。
別ディレクトリから実行した場合、正常に動作していたため、
define は問題ないと思い込んでいました。。。
#でも、何で正常なんだろう???
#ふしぎ、ふしぎ。。。

お礼日時:2001/08/08 16:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qsitemap.rorを使いたいんですが、ドキュメントタイプってなんでしょうか??

http://dokodemo.rankuappu.com/syono6.html

こちらで記述されているsitemap.rorを利用したいのですが、
sitema.rorの作成は出来るのですが、
下の方に書いてある、

今度はウェブサイトのトップページにRORサイトマップへのリンクを取り付け作業です。HEADセクション内に下記のコードを入れて下さい。以前取り付けたものが残っていれば、この作業は省けます。
ドキュメントタイプ(DTD)がHTML4.01の場合
<link rel="alternate" type="application/rss+xml" title="ROR" href="ror.xml">
ドキュメントタイプ(DTD)がXHTML1.0の場合(.xml"ここに半角スペースを入れる/>)
<link rel="alternate" type="application/rss+xml" title="ROR" href="ror.xml" / >

ってとこで「え?自分のHPはどっちなの?」って感じです。
HomepageNinjaってゆうソフトで作ったHPなので、よくわかりません。
調べ方ってあるのでしょうか??

http://dokodemo.rankuappu.com/syono6.html

こちらで記述されているsitemap.rorを利用したいのですが、
sitema.rorの作成は出来るのですが、
下の方に書いてある、

今度はウェブサイトのトップページにRORサイトマップへのリンクを取り付け作業です。HEADセクション内に下記のコードを入れて下さい。以前取り付けたものが残っていれば、この作業は省けます。
ドキュメントタイプ(DTD)がHTML4.01の場合
<link rel="alternate" type="application/rss+xml" title="ROR" href="ror.xml">
ドキュメント...続きを読む

Aベストアンサー

<html>より上にある
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
↑こんな感じのやつがドキュメントタイプの宣言です。
これはXHTMLと書いてあるのでXHTML1.0ということになります。

HTMLだとこんな文章です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

もし何も無ければ<br><img>などのタグを見て、<br /> <img />となっていなければ
「ドキュメントタイプ(DTD)がHTML4.01の場合」の方を入れれば大丈夫だと思います。

Qsystem関数でexeファイルを読み込みexeファイルからtxtアウトしたい

system関数を使ってaaa.exeを読み込み、そのaaa.exeの中でbbb.txtに数値を書き込みたいのですが、正しく書き込めず
0.611745
0.200018
0.611745
0.200018
0.611745
0.200018
と常に一定の値しか返しません。これは何故なのでしょうか?教えていただけませんか。よろしくお願いします。

Aベストアンサー

aaa.exeが一定の値しか返さないようにできているからです。
hm...
大方、乱数の種をきちんと設定していないんでしょう。

QYST 向けサイトマップ ror.xml

YST 向けサイトマップ ror.xml を
http://dokodemo.rankuappu.com/syono6.html
で作成しました。
エンコードは UTF-8 です。
この ror.xml を IE6 で見ようとすると title タグの中に日本語が含まれているのでエラーで見れません。Shift_JIS にすると見れます。
ブラウザで見えなくても UTF-8 のままでいいですよね?
つまり、SEO対策としてやってるのですが YST はちゃんと理解してくれるのでしょうか?

Aベストアンサー

YAHOOのウェブマスターツールから実際にサイトマップを登録してみて、きちんと登録できれば認識出来ているかどうか分かると思いますよ。参照URLにYAHOOウェブマスターツールからサイトマップの登録する方法が書いてある記事を入れておきました。
 認識されないファイルを入れるとエラーになるので一度試してみてください。

参考URL:http://seoxseo.com/yahoo/yahoositemapentry/

QVC++ Win32アプリ ディレクトリ内のディレクトリ名取得

こんにちは。
VC++のWin32アプリケーションでディレクトリ内の
ディレクトリ名を全部取得しようとしていますが
良い方法がみあたりません。
どなたかお分かりになる方、おしえてください。
よろしくお願いします。

Aベストアンサー

FindFirstFile
FindNextFile
を使って、

構造体WIN32_FIND_DATAの中の
dwFileAttributesをみてディレクトリかどうかを判定すれば
良いのでは?

QloadMovieで外部swfの読込みについて

現在、外部swfを連続で再生させるフラッシュを作成中です。

以下の方法で実現しています。
-------------------------------------------------
親SWFの_rootに,例えば「loadMC」というインスタンス名のムービークリップを作ります。
このMCは小さくて透明のMCか,中に何も入っていない空のMCが良いと思います。
そして,親SWFのフレームのスクリプトに

_root.loadMC.loadMovie("movie1.swf");

と書けば,「loadMC」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。
またはボタンにスクリプトを書いて,ボタンで読み込みをさせても良いです。
そして,「movie1.swf」の最終フレームに,

_root.loadMC.loadMovie("movie2.swf");

と書いておきます。これで同じ「loadMC」に「movie2.swf」が読み込まれます。
同じ所に新たなムービーを読み込むと自動的に前のムービーは unload されるので,
unloadMovie(); は必要ありません。
「movie2.swf」の最終フレームには
_root.loadMC.loadMovie("movie3.swf");
「movie3.swf」の最終フレームには
_root.loadMC.loadMovie("movie4.swf");
  …  …
-------------------------------------------------

作成後のプレビュー又はswfをダブルクリックなどで直接表示させると正常に表示されます。

しかし、HTMLに埋め込むと真っ白な状態でまったく表示されません。

調べているのですが原因がわかりません。
どなたかご教授のほど宜しくお願い致します。

現在、外部swfを連続で再生させるフラッシュを作成中です。

以下の方法で実現しています。
-------------------------------------------------
親SWFの_rootに,例えば「loadMC」というインスタンス名のムービークリップを作ります。
このMCは小さくて透明のMCか,中に何も入っていない空のMCが良いと思います。
そして,親SWFのフレームのスクリプトに

_root.loadMC.loadMovie("movie1.swf");

と書けば,「loadMC」というインスタンス名のムービークリップに「movie1.swf」が読み込まれます。
ま...続きを読む

Aベストアンサー

読み込む「movie1.swf」などの外部ファイルは
HTMLファイルと同じディレクトリに置く必要があります。
違うディレクトリに置きたい場合は、

_root.loadMC.loadMovie("./swf/movie1.swf");

などと、相対パス、あるいは絶対パスで指定します。

QWIN32API CreateFileのCOMx

WIN32API CreateFile(…"COMx"…)のCOM番号「x」)は、1~256まで可能ですか。

MS-VC++でRS-232C通信のWIN32アプリケーションを作る必要が生じてきました。
VC++6.0やVS2005のシステムは所有していますが、WIN32アプリは初心者です。
(WIN32アプリが出来たらDLLに改造するつもりです。)

http://www.saluteweb.net/~oss_winapi232.html
ここにどなたかが、サンプルプログラムをアップされてます。

この中の("COM1")は、"COM1"~"COM256"まで、対応しているんでしょうか。

Aベストアンサー

もしかするとOSによるかもしれませんが、
たしか、単にその記載ではCOM9までしか対応しておらず
COM10以上を指定する場合は「\\.\」というプレフィックスを
付ける必要があったように思います。
C言語のリテラルで書くと "\\\\.\\COM10" のような形ですね。

■おまけ
仮想COMポートソフトウェアを利用すれば、
実際にいろいろなポート名で試してみることが出来ます。

私はよく「com0com」というソフトを利用しています。
これは内部で接続された仮想COMポートのペアを作成するもので、
1台のPC内で送受信のテストをする際にも便利です。
http://sourceforge.net/projects/com0com/files/com0com/

64bitのOSで利用する場合はデジタル署名されていないドライバは
特別なことをしないとインストールできませんので、
デジタル署名された v2.2.2.0 の signed 版が簡単に利用できるかと思います。

GUIによる設定ダイアログがありCOMポート名称を指定できますが、
そこで「enable buffer overrun」と「enable exclusive」の設定をONにすると
実際のCOMポート動作に近くなるかと思います。

もしかするとOSによるかもしれませんが、
たしか、単にその記載ではCOM9までしか対応しておらず
COM10以上を指定する場合は「\\.\」というプレフィックスを
付ける必要があったように思います。
C言語のリテラルで書くと "\\\\.\\COM10" のような形ですね。

■おまけ
仮想COMポートソフトウェアを利用すれば、
実際にいろいろなポート名で試してみることが出来ます。

私はよく「com0com」というソフトを利用しています。
これは内部で接続された仮想COMポートのペアを作成するもので、
1台のPC内で送受信のテスト...続きを読む

Qmoviecliploader6の使い方

Flash MXで、どうしてもmoviecliploaderを
使用したくてmoviecliploader6を見つけたのですが
使い方がわかりません。
どなたか御存じの方はいらっしゃいますでしょうか。

http://osflash.org/moviecliploader6

moviecliploader6は、Flash Player7からしか使用できない
moviecliploaderを、Flash Player6で使用できるようにするもの
らしいのですが、ダウンロードしたものの何をどうしていいのか
わかりません。どなたか御存じの方はいらっしゃいますでしょうか。

環境はMac OS9.1のFlash MXです。
(Flash MX 2004ではありません。)
どうぞ、よろしくお願いたします。

Aベストアンサー

ご提示のページにも” MovieClipLoader6 class ”とある通り、MovieClipLoader6 は ActionScript 2.0 で登場したクラスと呼ばれるものです。
Flash MX では ActionScript 2.0 を扱えませんので、残念ながら MX では利用できないと思います。


どうしても使ってみたいのなら、Flash 8 を入手すること・・・でしょうか。

 ・ Flash 8 体験版ダウンロード
  http://www.adobe.com/jp/downloads/trial_all.html?tab:f=1

QWM_SIZEとWM_SIZINGの違い (Win32API)

Windowsプログラミングで、画面のサイズを変更したときに送られてくるメッセージで、
WM_SIZEで処理するのとWM_SIZINGで処理するのとでは何が違うのでしょうか?
WM_SIZEとWM_SIZINGの違いは何なのでしょうか?

また、似たようなものでWM_MOVEとWM_MOVINGの違いも教えてもらいたいです。

Aベストアンサー

実際にプログラムを書いてみれば、両者の違いは明白になるでしょう。

WM_SIZE は「サイズの変更後に」メッセージがアプリケーションに飛んでくるので、
ウィンドウのコーナーからマウスを離した時に文字がビョンと移動します。

Windows98 くらいまではウィンドウのサイズの変更はまずは輪郭だけサイズが変って
マウスをコーナーから離した時にウィンドウの中身が再描画されていたので、
WM_SIZE のメッセージハンドラを実装することになったでしょう。

しかし最近のインターフェイスはサイズ変更中もズリズリとウィンドウの中身が
再描画され続けます。これには WM_SIZING のメッセージハンドラを実装して、
サイズ変更中常に文字列の再描画を繰り返す必要があるでしょう。

Qmovieの使い方について質問があります。映画は「movie」という単

movieの使い方について質問があります。映画は「movie」という単語がありますが、普段使用する際は「movies」となります。その理由はどうしてでしょうか?どなたか、ご存知の方がおられましたら、回答をよろしくお願いします!

Aベストアンサー

「映画を見る」 というのは see a movie で、a movie だと思います。
「あるひとつの映画」 を見るわけですから。
個々の、特定の 「映画作品」 という意味の場合は、a movie でしょう。

ところが、「私は映画が好きだ」 となると、「映画というもの」 であり、特定の作品をさしているわけではないので、単数で表現するのは変です。
そこで、I like movies. となるでしょう。

また、「私はしばしば映画を見に行く」 なら I often go to the movies. となり、この場合は the movies が 「上映されている映画」 および 「映画館」 の意味を含んでいて、いろいろな映画館や映画作品のことであり、the movies と表現されるようです。

なお、「映画」 は film ともいいますので、「映画に行く」 というのは go to the films という言い方もあるようです。

Qboost::shared_ptr::getにて

こんにちは。
C++で書かれたプログラムの保守をしています。
以下のような感じで書かれたクラスがあります。

class Foo
{
public :
  Foo(){} ;
  virtual ~Foo(){} ;

  void Set( boost::shared_ptr< int > pValue )
  {
    _pValue = pValue.get() ;
  }

protected :
  void* _pValue ;
} ;

このクラスから _pValue を再び boost::shared_ptr< int > にして取得するにはどうしたら良いのでしょうか?

強引に、

boost::shared_ptr< int > Get( void )
{
  boost::shared_ptr< int >  temp ;
  temp.reset( (int*)_pValue ) ;
  return temp ;
}

とやっても案の定ダメでした。
void* _pValue の部分はいろいろ使われていて変更できません。
何かよい手段はないものでしょうか?

こんにちは。
C++で書かれたプログラムの保守をしています。
以下のような感じで書かれたクラスがあります。

class Foo
{
public :
  Foo(){} ;
  virtual ~Foo(){} ;

  void Set( boost::shared_ptr< int > pValue )
  {
    _pValue = pValue.get() ;
  }

protected :
  void* _pValue ;
} ;

このクラスから _pValue を再び boost::shared_ptr< int > にして取得するにはどうしたら良いのでしょうか?

強引に、

boost::shared_ptr< int > Get( void )
{
  boost::shared_ptr< int > ...続きを読む

Aベストアンサー

get()したポインタはshared_ptrの管理から外れますよ?


人気Q&Aランキング