Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запуск программы через правую кнопку в Windows / 5 сообщений из 5, страница 1 из 1
19.06.2010, 00:46:48
    #36695904
Dima Freger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск программы через правую кнопку в Windows
Доброго всем времени суток.

Возник вопрос:

написал я программу, которая сохраняет файлы в базу данных. Т.е. пользователь в Винде нажимает на файл правой кнопкой, появляется меню с моим пунктом (в регистре создал ключ, где написано ключ - */shell/Save in Database/command; значение - МояПрограмма.exe %1) нажимаю на него и вызов моей программы с параметром! Все работает супер, НО:

если пользователь выделил 2, 3, 5 файлов, то стартует 2,3,5 экземпляров моей прораммы! А мне надо чтобы стартовал то 1 экземпляр и принимал как параметр все выделенные файлы!!! Но то что стоит в регистре %1 берет тока один!!!!!

Подскажите пожалуйста как стартовать только один экземпляр и главное как перенимать все выделенные файлы!

Спасибо за ответы!

п.с. RAR работает именно так, выделил 100 фалов они все перенимабтся как параметры но стартует один экземпляр программы!
...
Рейтинг: 0 / 0
19.06.2010, 02:41:17
    #36695968
Памас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск программы через правую кнопку в Windows
Dima Freger,
возможно, в "%1"
в регистри встречаются [open("%1")]
...
Рейтинг: 0 / 0
19.06.2010, 03:28:32
    #36695982
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск программы через правую кнопку в Windows
Может быть стоит порыться в Context Menu Handler'ах? Сам в этом деле помочь не могу, не приходилось юзать, но дальше думаю гугл поможет, зная куда копать
...
Рейтинг: 0 / 0
19.06.2010, 11:20:30
    #36696100
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск программы через правую кнопку в Windows
Нужно использовать DDE. Посмотрите например как сделаны ключи у Winamp. А если конечно сделать по-правильному, то нужно написать COM DLL расширения проводника. Нужно только соответствующий интерфейс реализовать
...
Рейтинг: 0 / 0
22.06.2010, 01:55:37
    #36699509
Dima Freger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск программы через правую кнопку в Windows
VSVLADНужно использовать DDE. Посмотрите например как сделаны ключи у Winamp. А если конечно сделать по-правильному, то нужно написать COM DLL расширения проводника. Нужно только соответствующий интерфейс реализовать

Спасибо большое за ответ, но честно сказать это для меня было бы слишком.....
Я выбрал простой путь (бездельника):
Описан он полностью тут:
http://www.hanselman.com/blog/CommentView.aspx?guid=d2f676ea-025b-4fd6-ae79-80b04a34f24c

или:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

using Microsoft.VisualBasic.ApplicationServices;

namespace VisualBasic
{
    static class Program
    {

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            string[] args = Environment.GetCommandLineArgs();
            SingleInstanceController controller = new SingleInstanceController();
            controller.Run(args);

        }
    }

    public class SingleInstanceController : WindowsFormsApplicationBase
    {
        public SingleInstanceController()
        {
            IsSingleInstance = true;

            StartupNextInstance += this_StartupNextInstance;
        }

        void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
        {
            Form1 form = MainForm as Form1; //My derived form type
            form.LoadFile(e.CommandLine[1]);
        }

        protected override void OnCreateMainForm()
        {
            MainForm = new Form1();
        }
    }

}


using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace VisualBasic
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            string[] args = Environment.GetCommandLineArgs();
            LoadFile(args[1]);
        }

        public void LoadFile(string file)
        {
        textBox1.Text += file;
        }

    }
}

Еще раз всем спасибо!!!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Запуск программы через правую кнопку в Windows / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]