Subversion Repositories userdetect2

Rev

Rev 84 | Rev 86 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 84 Rev 85
Line 99... Line 99...
99
implementation
99
implementation
100
 
100
 
101
{$R *.dfm}
101
{$R *.dfm}
102
 
102
 
103
uses
103
uses
104
  ShellAPI, Clipbrd, Math, AlphaNumSort, UD2_Utils, UD2_TaskProperties;
104
  ShellAPI, Clipbrd, Math, AlphaNumSort, UD2_Utils, UD2_TaskProperties, UD2_Parsing;
105
 
105
 
106
type
106
type
107
  TUD2ListViewEntry = class(TObject)
107
  TUD2ListViewEntry = class(TObject)
108
    ShortTaskName: string;
108
    ShortTaskName: string;
109
    CloseAfterLaunching: boolean;
109
    CloseAfterLaunching: boolean;
Line 210... Line 210...
210
procedure TUD2MainForm.DoRun(ShortTaskName: string);
210
procedure TUD2MainForm.DoRun(ShortTaskName: string);
211
resourcestring
211
resourcestring
212
  LNG_TASK_NOT_EXISTS = 'The task "%s" does not exist in the INI file.';
212
  LNG_TASK_NOT_EXISTS = 'The task "%s" does not exist in the INI file.';
213
  LNG_NOTHING_MATCHES = 'No identification string matches to your environment. No application was launched. Please check the Task Definition File.';
213
  LNG_NOTHING_MATCHES = 'No identification string matches to your environment. No application was launched. Please check the Task Definition File.';
214
var
214
var
215
  slCmds: TStringList;
-
 
216
  i: integer;
215
  i: integer;
217
  cmd: string;
216
  cmds: TUD2CommandArray;
218
begin
217
begin
219
  if not ud2.TaskExists(ShortTaskName) then
218
  if not ud2.TaskExists(ShortTaskName) then
220
  begin
219
  begin
221
    // This can happen if the task name is taken from command line
220
    // This can happen if the task name is taken from command line
222
    MessageDlg(Format(LNG_TASK_NOT_EXISTS, [ShortTaskName]), mtError, [mbOK], 0);
221
    MessageDlg(Format(LNG_TASK_NOT_EXISTS, [ShortTaskName]), mtError, [mbOK], 0);
223
    ExitCode := EXITCODE_TASK_NOT_EXISTS;
222
    ExitCode := EXITCODE_TASK_NOT_EXISTS;
224
    Exit;
223
    Exit;
225
  end;
224
  end;
226
 
225
 
227
  slCmds := TStringList.Create;
226
  SetLength(cmds, 0);
228
  try
-
 
229
    ud2.GetCommandList(ShortTaskName, slCmds);
227
  cmds := ud2.GetCommandList(ShortTaskName);
230
 
228
 
231
    if (slCmds.Count = 0) and ud2.ReadMetatagBool(ShortTaskName, TagWarnIfNothingMatches, DefaultWarnIfNothingMatches) then
229
  if (Length(cmds) = 0) and ud2.ReadMetatagBool(ShortTaskName, TagWarnIfNothingMatches, DefaultWarnIfNothingMatches) then
232
    begin
230
  begin
233
      MessageDlg(LNG_NOTHING_MATCHES, mtWarning, [mbOK], 0);
231
    MessageDlg(LNG_NOTHING_MATCHES, mtWarning, [mbOK], 0);
234
      ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
232
    ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
235
    end;
233
  end;
236
 
234
 
237
    for i := 0 to slCmds.Count-1 do
235
  for i := Low(cmds) to High(cmds) do
238
    begin
236
  begin
239
      cmd := slCmds.Strings[i];
237
    UD2_RunCMD(cmds[i]);
240
      if cmd = '' then continue;
-
 
241
      UD2_RunCMD(cmd, SW_NORMAL); // Idea: Let SW_NORMAL be configurable by the user?
-
 
242
    end;
-
 
243
  finally
-
 
244
    slCmds.Free;
-
 
245
  end;
238
  end;
246
end;
239
end;
247
 
240
 
248
procedure TUD2MainForm.FormDestroy(Sender: TObject);
241
procedure TUD2MainForm.FormDestroy(Sender: TObject);
249
var
242
var
Line 386... Line 379...
386
    TasksListViewDblClick(Sender);
379
    TasksListViewDblClick(Sender);
387
  end;
380
  end;
388
end;
381
end;
389
 
382
 
390
procedure TUD2MainForm.Button1Click(Sender: TObject);
383
procedure TUD2MainForm.Button1Click(Sender: TObject);
-
 
384
var
-
 
385
  cmd: TUD2Command;
391
begin
386
begin
-
 
387
  cmd.executable := ud2.IniFileName;
-
 
388
  cmd.runAsAdmin := false;
-
 
389
  cmd.runInOwnDirectory := false;
392
  UD2_RunCMD(ud2.IniFileName, SW_NORMAL);
390
  cmd.windowMode := SW_NORMAL;
-
 
391
  UD2_RunCMD(cmd);
393
end;
392
end;
394
 
393
 
395
procedure TUD2MainForm.Button2Click(Sender: TObject);
394
procedure TUD2MainForm.Button2Click(Sender: TObject);
396
begin
395
begin
397
  if CompatSaveDialogExecute(SaveDialog1) then
396
  if CompatSaveDialogExecute(SaveDialog1) then
Line 400... Line 399...
400
  end;
399
  end;
401
end;
400
end;
402
 
401
 
403
procedure TUD2MainForm.URLLabelClick(Sender: TObject);
402
procedure TUD2MainForm.URLLabelClick(Sender: TObject);
404
var
403
var
405
  s: string;
404
  cmd: TUD2Command;
406
begin
405
begin
407
  s := TLabel(Sender).Caption;
406
  cmd.executable := TLabel(Sender).Caption;
408
  if Pos('@', s) > 0 then
407
  if Pos('@', cmd.executable) > 0 then
409
    s := 'mailto:' + s
408
    cmd.executable := 'mailto:' + cmd.executable
410
  else
409
  else
411
    s := 'http://' + s;
410
    cmd.executable := 'http://' + cmd.executable;
-
 
411
 
-
 
412
  cmd.runAsAdmin := false;
-
 
413
  cmd.runInOwnDirectory := false;
-
 
414
  cmd.windowMode := SW_NORMAL;
-
 
415
 
412
  UD2_RunCMD(s, SW_NORMAL);
416
  UD2_RunCMD(cmd);
413
end;
417
end;
414
 
418
 
415
procedure TUD2MainForm.TasksPopupMenuPopup(Sender: TObject);
419
procedure TUD2MainForm.TasksPopupMenuPopup(Sender: TObject);
416
begin
420
begin
417
  Run1.Enabled := TasksListView.ItemIndex <> -1;
421
  Run1.Enabled := TasksListView.ItemIndex <> -1;
Line 527... Line 531...
527
  begin
531
  begin
528
    if ud2.FulfilsEverySubterm(ParamStr(2)) then
532
    if ud2.FulfilsEverySubterm(ParamStr(2)) then
529
    begin
533
    begin
530
      ExitCode := EXITCODE_OK;
534
      ExitCode := EXITCODE_OK;
531
 
535
 
-
 
536
      if ParamStr(3) <> '' then
-
 
537
      begin
532
      if ParamStr(3) <> '' then UD2_RunCMD(ParamStr(3), SW_NORMAL); // Idea: SW_NORMAL changeable via parameter
538
        UD2_RunCMD(UD2P_DecodeCommand(ParamStr(3)));
-
 
539
      end;
533
    end
540
    end
534
    else
541
    else
535
    begin
542
    begin
536
      ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
543
      ExitCode := EXITCODE_TASK_NOTHING_MATCHES;
537
    end;
544
    end;
Line 568... Line 575...
568
end;
575
end;
569
 
576
 
570
procedure TUD2MainForm.Button5Click(Sender: TObject);
577
procedure TUD2MainForm.Button5Click(Sender: TObject);
571
var
578
var
572
  idTerm: string;
579
  idTerm: string;
-
 
580
  cmds: TUD2CommandArray;
573
  slCmd: TStrings;
581
  sCmds: string;
-
 
582
  i: integer;
574
begin
583
begin
575
  // TODO xxx: Auch eine Möglichkeit geben, einfach nur "Testecho(abc)" einzugeben und es kommt was bei raus
584
  // TODO xxx: Auch eine Möglichkeit geben, einfach nur "Testecho(abc)" einzugeben und es kommt was bei raus
576
 
585
 
577
  if InputQuery('Enter example term', 'Example: Testecho(abc):abc=calc.exe', idTerm) then
586
  if InputQuery('Enter example term', 'Example: Testecho(abc):abc=calc.exe', idTerm) then
578
  begin
587
  begin
-
 
588
    SetLength(cmds, 0);
579
    slCmd := TStringList.Create;
589
    cmds := ud2.CheckTerm(idTerm);
-
 
590
 
-
 
591
    sCmds := '';
-
 
592
    for i := Low(cmds) to High(cmds) do
580
    try
593
    begin
581
      ud2.CheckTerm(idTerm, slCmd);
594
      sCmds := sCmds + cmds[i].executable + #13#10;
-
 
595
    end;
-
 
596
 
582
      if slCmd.Count = 0 then
597
    if Length(cmds) = 0 then
583
        ShowMessage('No commands would be executed.')
598
      ShowMessage('No commands would be executed.')
584
      else
599
    else
585
        showmessage('Following commands would be executed:' + #13#10#13#10 + slCmd.Text);
600
      showmessage('Following commands would be executed:' + #13#10#13#10 + sCmds);
586
    finally
-
 
587
      slCmd.Free;
-
 
588
    end;
-
 
589
  end;
601
  end;
590
  LoadDetectedIDs;
602
  LoadDetectedIDs;
591
end;
603
end;
592
 
604
 
593
end.
605
end.