- ベストアンサー
ショートカットのような実行ファイル
本当はmdbファイル(Access)のアイコンを変えたいのですが、できないので 代わりに、ショートカットのように働く 実行ファイルを作りたいと思っています。 実行ファイルと同じディレクトリにあるmdbファイルを開くプログラムです。 どなたかご教授願えませんでしょうか? ソースを書いてもらえると助かります。 ちなみにBCCでコンパイルしています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
度々すみません。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ファイルを指定するのと同様な記述です。
その他の回答 (4)
yama1718さん、はじめまして。 そうですね、その手があったか!!...目からウロコ^^; 参考になりました。有り難うございます。 Manuelさん、回答ではなく失礼致しました。m(__)m
- yama1718
- ベストアンサー率41% (670/1618)
データベース(MDB)ファイルのショートカットでなくて、 Accessの実行ファイルのショートカットを作成して、 そのプロパティのコマンドラインに開きたいデータベースのファイル名を入れればいいのでは。 この方法ならアイコンも変更できますよ。
お礼
yama1718さん回答ありがとうございます。 確かにそれもいけますね! でも、やはりショートカットの左下のマークが気になってしまうので。 自分でも、いま質問を読み返すと説明不足でした。すいません。 本当にありがとうございました。
すみません。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, "\\" ); }
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; }
お礼
分かりづらい質問へ回答ありがとうございます。 ほとんど教えていただいたサンプルのままで動きました♪ 知り合いに簡単なデータベースを渡すのにexeファイルや オリジナルのアイコンだとそれらしくなると思いまして。 ショートカットでもアイコンを変えられるのは知っていたのですが 左下にショートカットのマークが出てしまうのを避けたかったんです。 本当にありがとうございました。