Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » dateinamen entgegennehmen per drag & drop

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.01.2006, 13:56 Uhr
lubU



Hallo zusammen,

ich möchte eine datei per drag an drop auf meine .exe (konsolen c progrämmchen) ziehen,
und den dateinamen + pfad innerhalb des programms weiterverwenden (für z.b. ein fopen).

wie ist das umzusetzten?

jmd ne idee?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.01.2006, 14:32 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Schau dir mal die Parameter der main()-Funktion an.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.01.2006, 14:34 Uhr
lubU



Habs mir so gedacht aber das funktioniert irgendwie nicht...


Code:
int main(int argc, char *argv[])
{
  
    FILE* Datei;

  Datei = fopen(argv[1],"r");


.....


das funktioniert wenn ich in der kommandozeile

programm.exe dateiname.txt

eingebe, nicht aber wenn ich per drag and drop die datei da drauf ziehe...

Dieser Post wurde am 02.01.2006 um 14:52 Uhr von lubU editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.01.2006, 15:13 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Bei Drag'n'Drop wird der komplette Pfad übergeben, wahrscheinlich wird dieser dir bei allen Leerzeichen zerhackt.

Ansonsten gib mal den Wert von argv[1] bei einer Drag'n'Drop-Aktion!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.01.2006, 16:08 Uhr
lubU



bin schon ein stückchen weiter.
argv[1] beinhaltet in der tat den ganzen dateinamen mit pfad

c:\dev-cpp\eingabe.txt

ich brauche den dateinamen aber (wegen den Escapesequenzen) in diesem Format:

c://dev-cpp//eingabe.txt

daher:



Code:
  j = strlen(argv[1]);
  
  for(k=0;k<j;k++)
  {
    if (argv[1][k] == 92)
    {
        dateiname[k] = '/'; dateiname[k+1] = '/';
        l++;
        i=2;
        
        /*printf("92: argv[1][%d], %c %c\n",k,dateiname[k], dateiname[k+1]);
        getch();*/
    }
    else
    {    
        if (i!=2) { dateiname[k] = argv[1][k]; }
        else if (i==2) { dateiname[k+1] = argv[1][k]; i=1; }    
    }
  }
  
  dateiname[k+l]='/0';



da ist irgendwie der wurm drin.

printf("%s",dateiname); ergibt: C://ev-Cpp//ingabe.txt=

irgendwo is mein logikfehler aber ich checks grad irgendwie nicht....

Dieser Post wurde am 02.01.2006 um 16:08 Uhr von lubU editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.01.2006, 16:18 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Wieso brauchst du die doppelten Backslashes?

Das ist zwar Standard, aber Windows kommt auch mit einfachen Slashes zurecht!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: