J'ai actuellement besoin de développer une application Windows. Je veux garder les choses simples (dans l'esprit de uTorrent) et je voudrais que le programme de résultat soit un seul fichier .exe contenant tout ce qu'il a besoin. P>
Le programme est simple. Cela a juste besoin de l'interface utilisateur. Il doit fonctionner pendant une longue période (poser une icône de plateau). Il doit faire des tâches de routine comme des E / S simples. Il a également besoin d'accéder à Internet, en particulier du serveur Web. P>
Outre ces petites exigences, je voudrais écrire tout cela dans JavaScript, car je me sens plus à l'aise que toute autre langue. P>
Je sais qu'il y a des choses comme l'hôte de script de Windows qui vous permettent d'exécuter des programmes JavaScript et d'interagir avec une API Win32, mais pourrai-je tout faire avec l'hôte de script Windows? Puis-je emballer tout l'hôte de script Windows dans un seul .exe? P>
Sinon, quelles alternatives ai-je pour JavaScript? P>
11 Réponses :
Je ne suis pas à 100% mais je crois que wsh utilise jscript ou wscript, pas JavaScript. P>
Jscript est une saveur de JavaScript / Ecmascript de Microsoft. La plupart des gens se réfèrent réellement à JScript comme JavaScript.
Jscript et JavaScript sont la même chose - ils sont tous les deux ECMAScript. Mais Microsoft ne voulait pas interférer avec la marque Sun sur "Java", alors ils ont appelé leur mise en œuvre de la carte ECMAScript "JScript". Mais c'est la même langue.
Je pense que les langues sont à peu près identiques à ce niveau (sans le DOM, etc.). Quelles sont les différences?
@Lucas manque de litige. Même raison J # n'est pas appelée Java #.
Bien que cela suive ECMAScript, car il s'agit de Microsoft, il introduit également d'autres choses qui ne suivent pas la norme: msdn.microsoft.com/en-us/library/4tc5a343 (v = vs.85) .aspx
@ANGELO: De même, de nombreuses saveurs introduisent des choses qui ne font pas partie de la norme. Beaucoup de choses sur cette liste sont maintenant conformes et / ou une partie de la spécification. Mozilla met également en œuvre de nombreuses fonctionnalités non standard, telles que la possibilité d'appeler une expression régulière comme s'il s'agissait d'une fonction.
Outre l'hôte de script Windows, il y a p>
Les deux sont écrits avec des technologies Web standard, HTML, JavaScript, Flash, etc. Ils peuvent également être étendus avec COM Objets / Contrôles ActiveX, tels que FileSystemObject, WMI, Wscript ou même ceux que vous vous écrivez. Les gadgets Windows Desktop ont accès à un espace d'accès / réponses séparé avec diverses propriétés et méthodes Win32-ESQ. P>
D'accord. Je ne suis pas si à l'aise avec l'ensemble de l'API de l'objet COM, mais puis-je faire des demandes d'E / S et HTTP avec elle? Internet semble manquer de documentation majeure sur ceux-ci. Qu'en est-il de l'hôte de script UI et de Windows ... ne pouvait pas trouver une grande partie de cela non plus.
@LUCA: Vous pouvez créer des demandes Web de domaine croisées à l'aide de XMLHTTPQUEST dans HTAS et Windows Desktop Gadgets. Toutefois, les E / S nécessiteront une interface de niveau supérieur telle qu'un composant COM. Vous pouvez utiliser WinHTTPQUESTS à partir de WSH, mais ils doivent être synchrones dans la plupart des cas.
@Pekka: Dunno, ce n'était pas moi :)
@Andy e: génial. Avez-vous de bons docs pour cela? J'apprécierais également certains tutoriels d'interface utilisateur :)
@LUCA: Je suis lié aux docs pour Htas et WDGS, ces deux pages ont des tutoriels d'introduction, mais je pense que vous trouverez probablement que Google est une ressource plus utile que mon cerveau pour des tutoriels sur WinHTTP :-)
Cela se fait probablement être évité car il propose une technologie diabolique micro $ de la technologie. Je n'ai aucune autre explication.
@Pekka: Soit cela ou les autres personnes ont baissé ici supposé que je les ai révélés et que je suis vengeant / petit. Dans les deux cas, tant que l'OP le trouve utile, cela n'a pas d'importance combien de votes qu'il obtient. Merci d'avoir mon dos ;-)
@Andy E: En fait, je le trouve très utile merci. La plupart des réponses récentes n'ont rien à voir avec ma question et le plus élu de l'air est sur l'air qui ne semble pas non liée à cause de moi vouloir un simple .exe et non un runtime entière comme une dépendance.
Internet Explorer a introduit le concept de Applications hypertextes dans IE 5. Cela n'a jamais fait de grand percée, les ressources et la documentation sont donc rares. P>
concurrent à dos de Mozilla Prisme semble être en vie et bien, cependant, et c'est Vaut vraiment un coup d'oeil. p>
prisme est une application qui permet aux utilisateurs de diviser les applications Web hors de leur navigateur et les exécuter directement sur leur bureau p> blockQuote>
+1, j'aime le regard du prisme. Un peu comme comment Htas aurait dû être fait :-)
@Andy yup. Htas était un excellent concept, je l'ai aimé quand ils l'avaient présenté dans la journée, mais ils ne l'ont jamais vraiment acquis. Peut-être que Prism obtient mieux ça!
Je pense que vous recherchez Adobe Air P >
L'exécution d'exécution Adobe® Air® 2 permet aux développeurs d'utiliser le logiciel HTML, JavaScript, Adobe Flash® et ActionScript® pour créer des applications Web exécutées comme applications client autonomes sans les contraintes d'un navigateur. ~ Le site Web de l'air p> blockQuote>
J'ai encore besoin de l'heure d'exécution ... c'est une surcharge supplémentaire que j'aimerais éviter
Ensuite, allez-y et écrivez votre propre application C ++ qui intègre V8 et écrivez vous-même tout le code de liaison C ++. Ou attendez jusqu'à ce que quelqu'un d'autre le fasse. Ou, vient d'apprendre C ++ ou autre chose qui fonctionne bien sur Windows. Vous n'améliorerez pas vos compétences dans d'autres langues en s'appuyant toujours sur une solution JavaScript.
Il y a aussi rhinocéros, mais il faut Java, qui est assez bloqué: développeur.mozilla.org/fr/rhino_documentation < / a>
J'aime ça, le temps d'exécution ou pas. Je ne savais pas l'air cela.
Je crois que la meilleure façon d'y aller est " v8 fort> peut exécuter autonome ou peut être incorporé dans n'importe quelle application C ++". - Ce que je crois est parfait pour vos besoins, car vous pouvez faire la plupart des éléments de JavaScript et utiliser des interfaces fournies pour communiquer avec le système. P>
Il devra encore écrire une certaine quantité de code C ++, ce qui, à mon avis, est la partie dont il a peur, au moins toute son interface graphique aura besoin d'une interface avec une boîte à outils native. Ainsi, à la fin, il devra écrire de grandes quantités de code contraignant. Globalement, il finira par écrit un enfer plus de code juste pour pouvoir utiliser JS.
Colorez-moi fou, mais sa seule étape de petite étape JavaScript vers Java ou C #. Je suggérerais C # comme, sur une machine à Windows, les bibliothèques sont déjà là. Vous pouvez simplement copier votre .exe et laissez-le déchirer. P>
Bon point. Cela ferait certainement des choses faciles ... Il n'y a pas beaucoup de façons de le faire avec une seule .exe avec pas trop de frais généraux si vous voulez rester avec JavaScript.
JavaScript idiomatique et idiomatique C # sont des contraires presque complets.
Vous suggérez-vous qu'il exécute JavaScript de dans i> un exécutable C # C #? (E.G., en utilisant WSH par Interop et en chargement des scripts des ressources ...) car, cela fonctionne assez bien. Mais si vous suggérez que c # est quelque chose comme JavaScript ...
#Matt syntaxiquement, ils sont très similaires. Les seules vraies différences qu'un programmeur normal remarquerait est la différence entre le DOM et le cadre. Les programmeurs JavaScript avancés auraient des problèmes avec les définitions de type, mais je pense que c # est plus clair plutôt que la façon dont il est en javascript (c'est-à-dire obscur).
@ Shog9 Non, je ne le suggérais pas. Vous devez admettre que la syntaxe JavaScript est très proche de JavaScript. La principale différence est le contexte (Dom vs. Framework).
@Will: Il y a des similitudes (plus avec l'introduction d'expressions Lambda et maintenant des types dynamiques), mais comme des notes mates les idiomes i> sont encore très différentes ... Par exemple, un programmeur JS pourrait penser rien de créer un objet dynamique et le transmettre en tant que seul argument à une fonction, où il est fusionné avec un autre objet de ce type pour produire un ensemble de paramètres pour l'algorithme ... Le programmateur AC # utiliserait des méthodes multiples et surchargées, une instance de une classe qui a fait défaut ses membres ou (avec C # 4.0) nommé Paramètres. Conceptuellement, ce sont les mêmes, mais l'apparence i> ...
Pourquoi ne pas utiliser Rhino - JavaScript sur la JVM? Vous pouvez même compiler vos scripts à des fichiers .class et les emballer dans un pot avec Rhino pour une distribution facile ... P>
Si vous voulez un seul .exe, quelles runtimes allez-vous bien s'ils sont nécessaires des pré-requis? P>
Si vous avez bien besoin de demander à .NET Runtime à préinstaller, vous faites tout votre travail dans jscript.net p>
J'ai trouvé qu'il y avait en fait un compilateur JavaScript fourni avec le fichier .NET appelé Pour plus d'informations: p>
http://www.phpied.com/make-votreour -javascript-a-windows-exe / p>
http://msdn.microsoft.com/fr -us / bibliothèque / 7435XTZ6 (vs.80) .aspx p>
Je suppose que ce n'est pas vraiment javascript, car il introduit des choses supplémentaires telles que jsc.exe code>. p>
importer code> et même une classe classe code> syntaxe qui est bizarre pour moi. Mais cela fonctionne parfaitement pour moi, car je vais juste faire des choses comme je suis habituée sur le Web. P>
Cadre incorporé du chrome (CEF) peut vous donner de l'aide. Je ne sais pas clairement comment, mais j'ai vraiment trouvé de nombreuses applications utilisant ce cadre. P>
http://code.google.com/p/chromiumebedded/ P >
Introduire pour le CEF sont: Le cadre de chrome incorporé (CEF) est un projet open source fondé par Marshall Greenblatt en 2008 pour développer un contrôle de navigateur Web basé sur le projet Google Chrome. Le CEF prend actuellement une gamme de langages de programmation et de systèmes d'exploitation et peut être facilement intégré aux applications nouvelles et existantes. Il a été conçu à partir des performances et de la facilité d'utilisation à l'esprit. La structure de base inclut les interfaces de programmation C et C ++ exposées via des bibliothèques natales qui isolent l'application hôte des détails de la mise en œuvre de Chrome et WebKit. Il fournit une intégration étroite entre la commande de navigateur et l'application hôte, y compris la prise en charge des plugins personnalisés, des protocoles, des objets JavaScript et des extensions JavaScript. L'application hôte peut éventuellement contrôler le chargement des ressources, la navigation, les menus contextuels, l'impression, tout en tirant parti des mêmes performances et des mêmes technologies HTML5 disponibles dans le navigateur Web Google Chrome. P>
De nombreuses personnes et organisations contribuent de temps et de ressources pour soutenir le développement de la CEF, mais une plus grande implication de la communauté est toujours la bienvenue. Cela inclut la prise en charge du projet COE CEF et des projets externes intégrant CEF avec des langages et des cadres de programmation supplémentaires (voir la section «Projets externes» ci-dessous). P>
Il semble que personne ne mentionnait JSDB . P>
JSDB propose un environnement de ligne de commande que vous pouvez exécuter du code JavaScript arbitraire. Vous pouvez facilement compiler dans un fichier .exe en utilisant la commande Il est important de savoir que vous devez appeler votre fichier JS Main.js dans un fichier ZIP standard. Pas sûr si le programme est requis. P>
Je n'ai pas vraiment essayé de faire des applications d'interface graphique avec cela - bien qu'il semble supporter diverses API comme ActiveX. P>
Il est possible qu'en utilisant la commande Copy / B mentionné ci-dessus, vous pouvez compiler un script à partir du fichier WScript.exe - mais j'ai essayé et je n'ai pas pu le faire fonctionner. Faites-moi savoir si quelqu'un essaie et a du succès en quelque sorte. P> copy / b jsdb.exe + programme.zip programme.exe.exe code> p>
Êtes-vous au courant de Htas? Ce serait une façon de faire la partie d'interface graphique i> entièrement dans HTML / CSS / JS, au moins.
@Andreas: Ouais, je pense que cela fonctionne de la même manière que l'hôte de script Windows (utilise probablement cscript.exe, etc.). Donc, je ne suis toujours pas sûr s'il suffit de faire ce dont j'ai besoin.
JavaScript n'est pas un moteur de navigateur, c'est une langue de script. Il pourrait y avoir des implémentations qui sont liées à un navigateur particulier, mais au moins V8 est un moteur "vanille" sans aucune fixation particulière. Jetez un coup d'œil à Node.js pour un exemple d'utilisation de non navigateur.
@LUCAS: JavaScript n'est pas exactement un langage de programmation - OK Retour sur vous - Nommez un programme écrit en JavaScript qui est utilisé partout - la réponse est nulle - elle est intégrée au navigateur - et je me tiens à cette énoncé - fait! Pourquoi pensez-vous que les pages Web ont JavaScript? Vous ne pouvez jamais faire de pointeurs, gestion de la mémoire en JavaScript ... Besoin d'aller sur ... Dossier entrée / sortie ... Vous êtes assez limité par ce que vous dites - vous connaissez JavaScript - Pourquoi ne pas le faire en C comme vous dire? Qu'est-ce que tu as contre elle? Vous dites que vous saviez que c assez bien ... alors qu'est-ce qui vous empêche de le faire?
@ tommieb75: désolé mec, mais ... tu ne sais pas de quoi tu parles. JavaScript est une langue de script et la plupart des VMS peuvent I> Soyez-vous assez facilement, mais ils ne sont pas nécessairement liés à un navigateur - en fait, de nombreux navigateurs s'appuient sur des ordinateurs virtuels développés séparément et disponibles pour une utilisation dans d'autres contextes. WSH est un exemple d'outil qui permet aux scripts d'accéder aux fichiers, d'exécuter des commandes système, etc. sans jamais toucher un navigateur. Et BTW: Comment allez-vous recommander vb.net puis différez JavaScript pour exclure les pointeurs et [manuel] de la gestion de la mémoire?
@ Shog9: lol !!!! Pourquoi n'allez-vous pas recommander JavaScript sur les autres et les entreprises pour le développement d'applications ... c'est votre prérogative ... pas le mien ... Quant à l'OP - Soyez limité, c'est bien ... mais ne postez pas une question posée sérieusement sur l'utilisation de JavaScript pour développer des applications de fenêtre ... Nuff a dit
@ Tommieb75: J'ai en fait utilisé i> JavaScript pour écrire des portions de Windows Desktop Apps. J'ai également utilisé C ++, C # et une poignée d'autres langues à cette fin. Il y a des avantages et des inconvénients à chacun, mais étant limité aux applications de navigateur ne sont définitivement pas un qui s'applique à JS. Vous accusez Luca d'être peu profond et bien fixé, mais cela semble être une affliction que vous-même souffrez de vous-même - vous semblez incapable de croire que d'autres ont eu du succès à l'aide de tous les outils que vous ne réveillez pas ou incapables d'utiliser efficacement.
@ SHOG9: Et si vous êtes programmé dans «poignée d'autres langues» ... Quant à l'affliction - vous avez une affliction de la traînée qui tente de gagner des arguments et de dessiner / taquiner sur lequel je ne serai pas tiré. ..sez beaucoup de trolls comme ça autour ... GL!