Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автозапуск с Windows XP, 98, Автозапуск 
:(
    Опции темы
Гость_fisic
Дата 22.10.2005, 01:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Возникла проблема с автозапуском программы.
1-й вопрос.
У меня имеется исходник по автозапуску на Delphi,
но чего-то я не могу переделать его в С++В. Постоянно
возникают ошибки, видимо, синтаксического рода.
Привожу исходник:
Код

procedure SetAutorun(aProgTitle,aCmdLine: string; 
                     aRunOnce: boolean ); 
var 
  hKey: string; 
  hReg: TRegIniFile; 
begin 
  if aRunOnce then hKey := 'Once' 
  else 
    hKey := ''; 

  hReg := TRegIniFile.Create( '' ); 
  hReg.RootKey := HKEY_LOCAL_MACHINE; 
  hReg.WriteString('Software\Microsoft\Windows\CurrentVersion\Run' 
                  + hKey + #0, 
                  aProgTitle, 
                  aCmdLine ); 
  hReg.destroy; 
end;

2-й. Вопрос.
Допустим, что эту процедуру удалось переписать в С++,
но куда вставлять вызов этой процедуры, а?
И еще. Вопрос по Windows, но по автозапуску. Поместил ехе-файл в
автозагрузку (у меня ХР). Автозагрузка происходит, но все то, что должно
делаться при создании (OnCreate) формы не делается, хотя когда вызываешь
из Командера, все работает. Почему?
С уважением fisic.

  Вверх
Artemon
Дата 22.10.2005, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Во-первых переводить данные исходник на Builder лень, посмотри в примерах Builder'а.
Во-вторых данный код можно всиавлять куда угодно, например в конструктор формы.

А на счет того, что при автозапуске ничего не происходит, так это от того, что "криво" автозапуск назначен.



--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Slayers
Дата 23.10.2005, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 17.7.2005
Где: Харьков

Репутация: нет
Всего: 1



Да переводить не охота smile
Вот тебе код по автозапуску на С++ smile

Код

    TRegistry *Reg = new TRegistry;

   try
  {
    Reg->RootKey = HKEY_CURRENT_USER;
    if (Reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", true))
    {
      Reg->WriteString("MyApp","\"" + ParamStr(0) + "\"");
      Reg->CloseKey();
    }
  }
  __finally
  {
  }


И ещо не забудь : #include "Registry.hpp"

Это сообщение отредактировал(а) Slayers - 23.10.2005, 07:19
PM MAIL   Вверх
Гость_fisic
Дата 23.10.2005, 11:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Slayers, Artemon, спасибо.
Сейчас попробую.
На счет "криво", а как не криво? Я просто скопировал ехе файл,
может еще что-то надо сделать?
С уважением, fisic.
  Вверх
forker
Дата 24.10.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 27.9.2005
Где: Долгопрудный

Репутация: нет
Всего: 1



А разве форума по Дельфе здесь нет?
Зачем Сишников напрягать? smile

Это сообщение отредактировал(а) forker - 24.10.2005, 12:02
PM MAIL ICQ   Вверх
Artemon
Дата 25.10.2005, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Гость_fisic, на счет "криво" - я имел в виду, что ты не так путь к EXE прописал


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Гость_fisic
Дата 27.10.2005, 00:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Artemon, попробую написать путь полностью.
Кстати, может быть надо полный путь вставить и
в исходник автозапуска (ответ slayers'а), потому как
при программном автозапуске просходит тоже самое:
форма создается, но ничего не происходит.
А может я чего-то не то делаю в OnCreate? Может нарушаю
какую-то последовательность действий? У меня там работа
с ини - файлом, автоматическое открытие и считывание файла.
С уважением, fisic.


  Вверх
Slayers
Дата 27.10.2005, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 17.7.2005
Где: Харьков

Репутация: нет
Всего: 1



Показывай как делаеш в OnCreate и тогда может подскажу... smile smile smile

PM MAIL   Вверх
Guest
Дата 27.10.2005, 20:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Slayers, показываю.
Create я перевел в Show, но все равно он не читает ini файл.
Суть кода. Считываем из ini файла имя последнего сохранения таблицы,
открываем ее. прочитываем одну из колонок, проверяем выполнение критерия,
если да то идем дальше, если нет, то выходим.
Код

void __fastcall TForm1::FormShow(TObject *Sender)
{
Edit1->Text = "CCC"//Это проверка, что он вообще сюда заходит, он заходит;
 TStringList *MyList = new TStringList;
   TIniFile *Ini = new TIniFile("c:\InstalRem.ini");
   AnsiString FName = Ini->ReadString("NameFile","FullName","");
   SFile = FName;
    int Num = Ini->ReadInteger("NumberDay", "Number", 0);
   delete Ini;
   Ini = NULL;
    if (FName=="")
     {
       return;
     }
       if (!FileExists(FName))
       {ShowMessage("Токого файла нет");
       return;
       }
       TFileStream *fn = new TFileStream(FName,fmOpenRead);
  if (fn!=Null)
    {
      int h, ccnt ;
      fn->Read(&h,sizeof(int));
      Grid1->ColCount=h;
      fn->Read(&h,sizeof(int));
      Grid1->RowCount=h;
      char text[256];
      for (int i=0, ccnt=Grid1->ColCount; i<ccnt; i++)
      for (int j=0, rcnt=Grid1->RowCount; j<rcnt; j++)
        {
          if(fn->Read(&h,sizeof(int))!=sizeof(int))
           {
             i=ccnt;
             break;
           }
          if(h==0) continue;
          if(fn->Read(text,h)!=h)
           {
              i=ccnt;
              break;
           }
          text[h]=0;
          Grid1->Cells[i][j]=text;
        }
    }
StatusBar1->Panels->Items[1]->Text="Именинников"+AnsiString(" ")+IntToStr(Grid1->RowCount-1);
   for (int i=1; i<=Grid1->RowCount-1;i++)
     {
     String date = Grid1->Cells[3][i];
     String year = FormatDateTime(".yyyy", Date());
     date.Delete(date.LastDelimiter("."),5);
     date.Insert(year,7);
     int delta = StrToDate(date)-Date();
       int  Nrow, Nrow1;
       if (delta>0)
       if (delta<=Num)
       {
       Grid1->Visible = false;
       GroupBox2->Visible = false;
       Label4->Visible = false;
       Panel1->Visible = true;
       Panel1->Top = 32;
      if (Grid2->Cells[0][Grid2->RowCount-1] == "" )
              {Nrow1=1;
               Grid2->Cells[0][Nrow1] = Grid1->Cells[0][i];
               Grid2->Cells[1][Nrow1] = Grid1->Cells[1][i];
               Grid2->Cells[2][Nrow1] = Grid1->Cells[2][i];
               Grid2->Cells[3][Nrow1] = Grid1->Cells[3][i];
              }
               else
             {   Grid2->RowCount = Grid2->RowCount+1;
                 Nrow = Grid2->RowCount-1;
                 Grid2->Cells[0][Nrow] = Grid1->Cells[0][i];
                 Grid2->Cells[1][Nrow] = Grid1->Cells[1][i];
                 Grid2->Cells[2][Nrow] = Grid1->Cells[2][i];
                 Grid2->Cells[3][Nrow] = Grid1->Cells[3][i];
               }
               }
StatusBar1->Panels->Items[1]->Text="Именинников"+AnsiString(" ")+IntToStr(Grid2->RowCount-1);
     }
delete fn;
delete Ini;
}


С уважением, fisic.
  Вверх
Гость_fisic
Дата 27.10.2005, 21:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











В форуме случайно нашел, что OnCreate не шибко хорош для CBuilder, лучше
использовать конструктор главной формы, так я подумал, может стоит все, что
у меня было в OnCreate туда перенести.

По поводу цитаты: я б ее привел, да что -то не получается.
нашел через поиск - Word - паролирование формы автор Вячеслав.
C уважением, fisic.




  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.