• ベストアンサー

ショートカットのような実行ファイル

本当はmdbファイル(Access)のアイコンを変えたいのですが、できないので 代わりに、ショートカットのように働く 実行ファイルを作りたいと思っています。 実行ファイルと同じディレクトリにあるmdbファイルを開くプログラムです。 どなたかご教授願えませんでしょうか? ソースを書いてもらえると助かります。 ちなみにBCCでコンパイルしています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#144013
noname#144013
回答No.3

度々すみません。FarEyesです。 前述(回答:ANo.1)のサンプルプログラムにもう一箇所訂正があります。 お手数ですが以下の部分の修正をお願いします。 ※やはり作成したものは、じっくり見直してみないといけませんね。^^; すみませんでした。 <訂正前> /* execute process */ iret = system( sbuf2 ); if( iret == -1 ){ eno = errno; iret = 2; printf( "##%03d: Function Error!! [system: errno=%d]\n", iret, eno ); } <訂正後> /* execute process */ iret = system( sbuf2 ); if( iret == -1 ){ eno = errno; iret = 2; printf( "##%03d: Function Error!! [system: errno=%d]\n", iret, eno ); return iret;   ←この行を追加します。(プログラムを終了させる) } ※この修正は、今回のサンプルでは大した影響はありませんが、Accessを起動した後に別の処理 を行うようなケースだと問題が発生する事があるかもしれません。 <P.S.> 参考までとして、このサンプルで作った実行プログラムのショートカットを作成し、そのショートカット のプロパティ設定で「リンク先」の記述に、開きたいmdbファイルを追加しておくと、,ショートカットを 起動した際に指定したmdbファイルがAccessで開かれます。 ■「リンク先」の記述例  D:\Prog\MySample\acexe.exe xxxxx.mdb  ※"xxxxx.mdb"の部分(開きたいmdbファイル)を追加します。  これはコマンドプロンプト上での実行時に引数としてmdbファイルを指定するのと同様な記述です。

Manuel
質問者

お礼

分かりづらい質問へ回答ありがとうございます。 ほとんど教えていただいたサンプルのままで動きました♪ 知り合いに簡単なデータベースを渡すのにexeファイルや オリジナルのアイコンだとそれらしくなると思いまして。 ショートカットでもアイコンを変えられるのは知っていたのですが 左下にショートカットのマークが出てしまうのを避けたかったんです。 本当にありがとうございました。

その他の回答 (4)

noname#144013
noname#144013
回答No.5

yama1718さん、はじめまして。 そうですね、その手があったか!!...目からウロコ^^; 参考になりました。有り難うございます。 Manuelさん、回答ではなく失礼致しました。m(__)m

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.4

データベース(MDB)ファイルのショートカットでなくて、 Accessの実行ファイルのショートカットを作成して、 そのプロパティのコマンドラインに開きたいデータベースのファイル名を入れればいいのでは。 この方法ならアイコンも変更できますよ。

Manuel
質問者

お礼

yama1718さん回答ありがとうございます。 確かにそれもいけますね! でも、やはりショートカットの左下のマークが気になってしまうので。 自分でも、いま質問を読み返すと説明不足でした。すいません。 本当にありがとうございました。

noname#144013
noname#144013
回答No.2

すみません。FarEyesです。 前述(回答No:ANo.001)のサンプルプログラムに一部訂正があります。 以下の部分を訂正してください。申し訳ありませんでした。 <訂正前> /* adjust path */ len = strlen( sbuf1 ); if( sbuf1[len] != '\\' ){ strcat( sbuf1, "\\" ); } <訂正後> /* adjust path */ len = strlen( sbuf1 ); if( sbuf1[len-1] != '\\' ){ strcat( sbuf1, "\\" ); }

noname#144013
noname#144013
回答No.1

Manuelさん、はじめまして。 いまいちやりたい事が解らないのですが、 単純にmdbファイルのアイコンを変えたいならば、直接は変更できませんが、 mdbファイルのショートカットを作成し、そのショートカットのプロパティ設定で アイコンを変更するというのではダメでしょうか? それと、プログラムからmdbファイルを開きたいのであれば、プログラム内で system関数などを使用し、Accessを起動してmdbファイルを開くという方法 があると思います。 ※以下はそのサンプルです。(当方はVC++ Ver.5でテストしました) /* * acexe.c:Access起動 * * <コマンドライン形式> * acexe {accessファイル名}  注)accessファイルの位置はカレントとします。 */ #include <stdio.h> #include <stdlib.h> #include <direct.h> #include <process.h> #include <errno.h> /* path-name of Access exe file */ const char ft_access[] = { "\"C:\\Program Files\\Microsoft Office\\Office\\MSACCESS.EXE\"" }; /* * main */ int main(int argc, char *argv[]) { char sbuf1[_MAX_DIR+2]; char sbuf2[_MAX_DIR+300]; int len; int eno; int iret = 0; /* get current path */ if( _getcwd( sbuf1, _MAX_DIR ) == NULL ){ eno = errno; iret = 1; printf( "##%03d: Function Error!! [_getcwd: errno=%d]\n", iret, eno ); return iret; } /* adjust path */ len = strlen( sbuf1 ); if( sbuf1[len] != '\\' ){ strcat( sbuf1, "\\" ); } /* make command line string */ if(argc < 2){ sprintf( sbuf2, "%s", ft_access ); } else{ sprintf( sbuf2, "%s %s%s", ft_access, sbuf1, argv[1] ); } /* execute process */ iret = system( sbuf2 ); if( iret == -1 ){ eno = errno; iret = 2; printf( "##%03d: Function Error!! [system: errno=%d]\n", iret, eno ); } return 0; }

関連するQ&A

専門家に質問してみよう