• ベストアンサー

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

本当は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

  • ショートカットで起動した場合のカレントディレクトリ

    実行ファイルのあるディレクトリに結果を出力するCで書いたプログラムがあります。 この実行ファイルのショートカットを作り、それを起動したところ、結果が手元ではなく、実行ファイルのあるディレクトリに作成されてしまい困っています。 ショートカットをおいたディレクトリに出力するようにするにはどうやったらよいのでしょうか? 実行ファイルのソースリストはありますので、実行ファイルの修正も可能です。 ソースリストを見たところ、結果を出力するファイルは、  fp = fopen("temp.txt", "w"); でファイルをオープンしていました。 なお、実行環境は、WinXPです。 よろしくお願いします。

  • ショートカットファイルから呼び出されたことを判別するためには

    VC++2008にて、サーバとの通信プログラムを作成しています。 ディレクトリやファイル名を書き込んだ、 特定拡張子のファイルを作成し、 そのファイルの拡張子を、作成したプログラムに 関連付けし、ファイルをクリックした際に、 ファイル内データを読み込んで、書き込まれている データにアクセスする機能を作成したいと考えています。 (通信プログラムを介したリンクファイル・  ショートカットファイルといった意味合いです) このショートカットファイルをダブルクリックした際、 関連付けた通信プログラムが自動起動するのですが、 ショートカットファイルからの起動かどうかを判別する 方法が分かりません。 また、通信プログラムが既に起動している場合は、 新たにプログラムが起動するのではなく、 立ち上がっている方のプログラム側が ショートカットにて呼び出されたことについての メッセージを受け取りたいのですが、 この方法についても実装方法が分かりません。 以上2点について、ご教授願えればと思います。 よろしく願いします。

  • 実行ファイルと実行モジュールについて。

    実行ファイルは、例えばソースコードをコンパイルしたものを実行ファイルと呼び、実行モジュールは、例えば、ソースコードをアセンブル、 コンパイルインタープリタの複数のファイル群の事でしょうか?で、違いは、ファイルは 1つか複数の違いという事でしょうか?教えていただけないでしょうか?すみません。

  • bcc コンパイルしたファイルが実行できない。

    sea_clear_skyです。 環境 BCC55コンパイラ OS XP SP3 hello worldと表示させるプログラムは、コンパイルして、コンソールで表示させることはできるのですが、MYSQLに接続して、 データを表示させるプログラムは、コンパイルして、リンクして、 EXEファイルを作れるのですが、そのできたEXEファイルを実行しようとすると、問題が発生したため、ファイル名.EXEファイルを 終了しますと表示され、コンソール画面に何も表示されません。 以前は、mysqlに接続させて、コンソールに表示させることは できました。BCCコンパイラを標準コンパイラにしたりできるのでしょうか? VC++ C#.NETも使用しています。 この二つのコンパイラとBCCは共存できないのでしょうか? よろしくお願いします。

  • バッチ実行時のショートカット

    バッチファイルを作って実行すると、「~へのショートカット」 とMS-DOSへのショートカットが作成されてしまいます。 フォルダのなかに目立つアイコンがたくさんになってしまって邪魔なので、 このショートカットを作らないようにしたいのですが、 どうしたらよいのでしょうか? バッチファイルに書きこむ、わけにはいかないですよね…? まれにショートカットが作成されないこともある気がするのですが… 教えていただけないでしょうか、よろしくお願いします。

  • javaの実行について

    java入門の入門で、javaの勉強を始めた初心者です。その中で、わからないことが出てきたので、助けてください。  public class sample { public static void main(String[] args) { System.out.println("hello!"); } } というプログラムを書いて、コンパイルし、実行したのですが、 Exception in thread "main" java.lang.NoClassDefFoundError: sample/class というメッセージが出てきて実行できませんでした。ファイル名は、正確に入力しました。ちなみに、 sourceというディレクトリを作ってその中に、プログラムとコンパイルしたファイルを入れています。 C:\Source のディレクトリ 005/08/21 01:15 <DIR> . 005/08/21 01:15 <DIR> .. 005/08/21 04:59 412 sample.class 005/08/21 01:14 108 sample.java 2 個のファイル 520 バイト 2 個のディレクトリ 78,121,422,848 バイトの空き領域  そして、環境変数pathは、  C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Common Files\Adaptec Shared\System;C:\Program Files\Common Files\Ulead Systems\MPEG;C:\ Program Files\Java\jdk1.5.0_04\bin です。長くなってしまいましたが、ここで止まってしまって先に進めません。どうかアドバイスをお願いします。

    • ベストアンサー
    • Java
  • C++とmakeの実行について

    付属のCDのプログラムを実行したいのですがコンパイルの仕方が分かりません。プログラムはc++とmakeというものが書かれており,色々調べてみましたがBCCではコンパイルできずエラーが出てしまいます。どのようにコンパイルしたらよいのでしょうか。皆様よろしくお願いします。

  • JAVAコンパイルと実行

    はじめまして。質問があります。 eclipseで開発したjavaのソースを実行するとき、メニューからメインクラスを指定し実行するだけでプログラム実行されますが、そのプログラムをコマンドプロンプトで実行する場合、できるプログラムとできないプログラム(例外:NoClassDefFoundError)があります。 コンパイルはeclipceのほうで勝手に.classファイルが生成されるので、そのclassファイルをjava [ファイル名]と打つだけだと思います。 実行できるプログラムとできないプログラムの違いは以下の通りです。 ・実行できるプログラム eclipseで新規でプロジェクトを作成。その直下にソースが存在し、クラスファイルも同じディレクトリに生成されます。 ・実行できないプログラム eclipseで新規でプロジェクトを作成。ソースフォルダ(src)を作成し、その下からパッケージ、クラスを作成しました。そうすると、エクスプローラでそのプロジェクトを見ると、binフォルダが生成されていました。その中にクラスファイルが生成されます。 違いはこのような感じです。実行できないプログラムをコマンドプロンプトで実行させるためにはどうしたらよいでしょうか?eclipseの使い方はだいぶわかってきたのですが、どのように動作しているか(java自体も)がわかりません。ご教授宜しくお願い致します。 OS:windows2000 開発環境:eclipse 3.0(J2SE 1.4.2_03)

    • ベストアンサー
    • Java
  • 実行ファイルからソースがとりだせますか?

    実行ファイルを逆コンパイルしてソースを取り出せたり しますか?

  • 別のPCにファイルを移してコンパイルして実行するとsegmentation faultになる。

    外のPCで正常に動いているプログラムを自分のノートPCでも動かそうと思いソースファイル等必要なものをディレクトリごと移しました。コンパイルはできましたが実行するとプログラムの開始の段階でsegmentation faultになってしまいます。他のPCでは正常に動いているコードなので間違いはないはずです。 cygwin環境です。 これはどういった原因で起こると考えられるでしょうか?