# Wine und Linuxapplikationen

## Pietschy

Ich weis der Titel ist so ganz vielaussagend aber ich wusste nicht wie ich sonst tun sollte.  :Wink:  Ausserdem ist das ganze noch nicht mal ne gentoofrage.

Ok vor kurzen gabs hier eine Thread indem es darum ging, wie man eMule mit Wine zum laufen bringt. Beim ausprobieren hat das ganze auf Anhieb geklappt. Jetzt stell ich mir aber die Frage ob es möglich ware wine zu sagen, das der default windwos Medienplayer zB der linux mplayer ist, sodas man zB bei eMule die Vorschau nutzen kann.

Ich hoffe das hat jetzt jemand verstanden   :Rolling Eyes: 

Ronny

----------

## Headhunter123

Imo geht dat net. EMule denkt ja es würde unter Windows laufen, und unter WIndows kann man keine Linuxprogramme ausführen  :Wink: 

----------

## Pietschy

Danke

Ich geb mich aber noch nicht geschlagen, laut wine docu wird das starten von linux applikationen aus wine programmen herraus unterstüzt.

 :Rolling Eyes: 

Ronny

----------

## SuEt

nicht ganz deine frage aber versuch doch einfach mal:

mplayer /pfad/zu/temp/von/emule/filename

SuEt

----------

## Pietschy

JO das klappt selbstverständlich, aber es wäre doch schöner und bequemer wenn mein Plan zur Durchführung gekommen ist.

Ronny

----------

## Headhunter123

Imo geht dat net. Im Emule Source muss irgendwo folgende Zeile stehen (oder so ähnlich)

```

std::string mediaPlayer = "C:\\programme\\mplayer\\mplayer2.exe " + FILE;

ShellExecute (mediaPlayer.c_str(), SW_SHOW);

```

ShellExecute führt ein *Windows* Kommando aus. Da kann man net einfach so einen Linuxbefehl reinhauen. Was *evtl* möglich wäre ist das :

```

std::string mediaPlayer = "cygwin wine H:\\usr\\bin\\mplayer " + FILE;

ShellExecute (mediaPlayer.c_str(), SW_SHOW);

```

Damit würdest du folgendes machen :

Emule ruft cygwin auf, cygwin ruft wine auf, wine ruft den (linux) mplayer auf. Ein Emulator der einen Emulator emuliert   :Wink: 

Aber ob das das wahre ist ?

----------

## zweistein12

 *Quote:*   

> 
> 
> ```
> std::string mediaPlayer = "C:\\programme\\mplayer\\mplayer2.exe " + FILE;
> 
> ...

 

Ich glaube kaum das ein Win-Prog so einen Pfad Hart codiert hat. Unter Windows wird eigentlich immer die Regestry befragt, wo denn der Standard-Mediaplayer zu finden ist, dieser wird ann entsprechend aufgerufen. SOmit waere es eigentlich moeglich wine sowas beizubringen. Wie weiss ich aber auch nicht. Wine faengt ja den Aufruf an die Registry ab. Am besten mal im Netz schauen, und die Wine-Doku lesen.

----------

## Headhunter123

schau mal in die preview.cpp vom Emulesource  :Wink: 

----------

## Pietschy

Sorry ich wollt den Thread nicht einschlafen lassen habe nur irgendwie keine Zeit gehabt weiter zu testen.

@headhunter123

Ich habe dieses oder ähnliche Zeilen in den emule sourcen nicht finden können  :Question: 

emule benutz die Programme für die Vorschau die in der Registrie stehen von daher ist die Registrie das richtige Stichwort. 

Folgende Vorgehensweise, bracht bei mir Teilerfolg. Einen unter wine zumindest startbaren WindwosPLayer installieren der in seine optionen eine funktion wie 'Dateientypen verknüpfen' osä hat Dateientypen natürlich gleichmal mit diesem Programm verknüpfen.Der Fusionplayer ging bei mir http://www.shareware.de/software/Programm_Fusion_6733.html

Dann die system.reg öffnen und zusehen das man die Dateinetypen an eine ander exe heftet (kann leider keine Beispiele einfügen, aber man sollte es sehen). Ach ja symlink (mplayer.exe) vom mplayer ins fake windows nicht vergessen sehr hilfreich. 

Zumindest ruft emule jetzt den mplayer schonmal auf beim vorschauen, aber dummerweise bekommt mplayer den Windowspfad mitgegeben. 

mplayer E:\pfad\video.mpg 

son mist an dieses kleine dreckige Hürde hab ich gar nicht gedacht. Aber ich denke mit einem bash script sollte das lösbar sein.

Ronny

----------

## Pietschy

 *Pietschy wrote:*   

> 
> 
>  Aber ich denke mit einem bash script sollte das lösbar sein.
> 
> 

 

mhhh Große Fresse nix dahinter, ich stehe auf dem Schlauch.

ICh brauch eine zündente idee, wie ich. Aus

E:\donkey\temp\file.mpg >> /windows/E/donkey/temp/file.mpg

mache ??? Mit sed war ich da irgendwie glücklos  :Crying or Very sad: 

Hilf mir ma jemand   :Wink: 

Ronny

----------

## Egal

Zum Konvertieren des Pfades ^^

folgendes C-Programm sollte funktionieren (obwohl es nicht besonders schön ist)  :Very Happy: 

```

#include <stdio.h> 

#include <string.h> 

int main(int argc, char* argv[]) {

    if( argc != 2) {

        printf("Usage: convert [filename]\n");

        return 1;

    }         

              

    printf("/windows/E/");

              

    for(int i=3; i<strlen(argv[1]); i++)

        if( argv[1][i] == '\\' ) printf("/");

        else printf("%c", argv[1][i]);

    printf("\n");

}

```

einfach mit gcc [dateiname] -o convert kompilieren und mit.

./convert "[pfad]"

aufrufen

---------------------------------------------------------------------------------------------

was anderes:

Passt jetzt zwar nicht ganz dazu, aber ich hab auch ein kleines Problem mit 

winex und eMule .. eMule läuft jetzt, aber wenn ich ein Kontextmenü öffne,

stürzt es immer ab .. hat jemand ne Idee woran das liegen könnte?

output:

```

jupiter@jupiter ~ $ winex --debugmsg +all c:\\eMule-0.26b\\emule.exe

err:win32:PE_fixup_imports No implementation for shlwapi.dll.0(UrlCanonicalizeA) imported from wininet.dll, setting to 0xdeadbeef

err:win32:PE_fixup_imports No implementation for shlwapi.dll.0(UrlEscapeA) imported from wininet.dll, setting to 0xdeadbeef

wine: Unhandled exception, starting debugger...

err:seh:start_debugger Couldn't start debugger ("debugger/winedbg 134688584 136") (2)

Read the Wine Developers Guide on how to set up winedbg or another debugger

err:dc:DCE_FreeWindowDCE [000100ee] GetDC() without ReleaseDC()!

err:dc:DCE_FreeWindowDCE [00010025] GetDC() without ReleaseDC()!

```

die 2 Fehler vor "Unhandled exception ..." kommen ganz am Anfang der Rest erst wenn

ich ein Kontextmenü aufrufe.

--------------------------------

Edit: ich musste noch die msimg32.dll einbinden. Dann gehts  :Smile:  .. hat sich also erledigt

----------

## Pietschy

dein winex problem:

Mich dolcht als ob bei die die shlwapi.dll fehlt. Kannst du dir bei www.dll-files.com besorgen und in den system32 ordner deines fakewindows entpacken.

ich benutzt wine nicht winex um emule auszuführen und "nur" version 0.25b von emule bei späteren versionen ist sense sobald ich versuche den einstellungsdialog zu öffen. leider gibts da keine debugmeldungen ich kann dem also nicht nachgehen.

---------------------------------------------------------------------------

Vielen dank für deine kleines prog, ...

... aber ich konnte es nicht übersetzen laut den meldungen stimmt irgendwas in der zeile 12 nicht.   :Question:  Ich hab aber auch keine Ahnung davon, also konnt ichs nicht lösen.

Aber egal. Ich habe mich erstmal wieder meinem bash script gewidmet und bin etwas teifer in die abgründe von sed eingestiegen.

Resultat:

```

#!/bin/bash

#wine mplayer starter mplayer.exe

echo "$1" | sed -e 's|\\|/|g' | sed -e 's|E:|/windows/E|g' > /tmp/mplayer.tmp

mplayer -playlist /tmp/mplayer.tmp

rm -r /tmp/mplayer.tmp

```

Und es funktioniert.   :Laughing: 

Sprich der symlink von oben weg, das bashscript (mplayer.exe) hin. Vorschau funzt. 

Verbesserungsvorschlage zum Script sind aber durchaus willkommen.

----------

